logo

Dodatni tipovi blokova (EBT) - Novo iskustvo rada sa Layout Builder-om❗

Dodatni tipovi blokova (EBT) – stilizovani, prilagodljivi tipovi blokova: slajdšouvi, kartice sa tabovima, kartice, akordeoni i mnogi drugi. Ugrađena podešavanja za pozadinu, DOM Box, javascript dodatke. Iskusite budućnost kreiranja rasporeda već danas.

Demo EBT moduli Preuzmite EBT module

❗Dodatni tipovi pasusa (EPT) – Novo iskustvo rada sa pasusima

Dodatni tipovi pasusa (EPT) – analogni skup modula zasnovan na pasusima.

Demo EPT moduli Preuzmite EPT module

Scroll
21/06/2025, by Ivan

Ova dokumentacija je nepotpuna. Saznajte više informacija.

Zaštita od napada HTTP HOST Header (ne dozvolite da vaš sajt misli da je neko drugi)

Drupal 7 je dodao u jezgro novu funkciju, koja nije namenjena direktnoj interakciji sa korisnikom, ali se ponekad naziva poormanscron. Ova funkcija pokreće periodične zadatke sajta Drupal, kao što su čišćenje log fajlova, slanje emailova i čišćenje keševa. Ova funkcija u kombinaciji sa dinamičkim određivanjem „baznog URL-a“ (dodata u Drupal 4.7) može dovesti do nekih neobičnih situacija. Ovaj članak opisuje neke od tih neobičnih situacija koje nastaju sa oba modula ili oba zajedno, i šta možete učiniti da ih sprečite. Komentari ispod pretpostavljaju neke podrazumevane konfiguracije — na kraju ću objasniti kako promeniti ove podrazumevane postavke da biste sprečili ove probleme.

Scenario 1. Slanje/primanje emailova korisnika namenjenih drugom domenu

Ovo ponašanje je relativno lako reprodukovati:

1. Usmerite novi domen na IP adresu postojećeg sajta — recimo da je postojeći sajt http://www.example.com, a novo ime koje pokazuje na taj IP je http://other-site.example.org.

2. Posetite URL: http://other-site.example.org/user/password

3. Unesite korisničko ime koje verovatno postoji na sajtu.

Kao rezultat, u koraku 2 detekcija $base_url smatra da je vaš sajt http://other-site.example.org i svi tokeni za email, npr. [user: one-time-login-url], koji sadrže linkove ka sajtu, biće promenjeni da koriste http://other-site.example.org kao bazni URL. Korisnik koji primi ovaj email će videti da su njegovo korisničko ime i email za example.com sada nekako korišćeni na http://other-site.example.org, što obično zbunjuje. Međutim, postoje dva loša scenarija koja mogu nastati:

  • U najgorem slučaju, korisnik može kliknuti na link za resetovanje lozinke koju zlonamerni sajt može koristiti da pristupi sajtu u ime tog korisnika.
  • Korisnik može uneti svoje korisničko ime/lozinku na http://other-site.example.org — takozvani socijalni inženjering — koje se potom može iskoristiti na glavnom sajtu.

Scenario 2. Keširanje zapisa sa pogrešnim domenom

Sličan problem može nastati kada korisnik koristi pogrešan domen za zahtev, a taj zahtev popunjava zapis u kešu sa dinamički definisanim domenima. Kasnija poseta koja izvlači podatke iz tog keša dobiće pogrešan domen. Core page cache Drupal-a koristi domen kao deo ID-ja keša i time sprečava ovaj problem, ali drugi keš mehanizmi možda nisu otporni na ovu situaciju.

Scenario 3. Email obaveštenja sa pogrešnim domenom

Još jedan problem može nastati na sajtovima koji koriste module za slanje emailova tokom pokretanja cron zadataka. Ovaj scenario zahteva poormanscron sa dinamičkim određivanjem base_url. Ako korisnik slučajno pokrene poormanscron dok u redu čekaju obaveštenja i poseti sajt preko pogrešnog domena, obaveštenja će biti poslata sa tim pogrešnim domenom. Korisnici će biti zbunjeni zašto im emailovi koje očekuju sa example.com sadrže linkove sa domenom http://other-site.example.org.

Rešenja za probleme sa dinamičkom detekcijom Drupal base_url

Postoje bar četiri moguća rešenja ovog problema, mada nisu sva neophodna da se problem spreči. Izaberite prema svojoj okolini.

1. Možete postaviti određeni domen kao vaš $base_url u sites/default/settings.php. Iako je dinamička detekcija zgodna funkcija, može izazvati probleme. Jedan način da se to zaustavi je da se postavi fiksna vrednost.

2. Koristite specifičan sites/example.com/settings.php i dozvolite dinamičku detekciju $base_url — to znači da Drupal odgovara svim poddomenima example.com, što može biti prednost ili mana.

3. Konfigurišite vaš web server tako da prikaže podrazumevanu stranicu (kao što je stranica greške) za zahteve koji ne odgovaraju vašoj podrazumevanoj Drupal instalaciji.

4. Konfigurišite vaš web server da preusmeri sve zahteve koji nisu za odgovarajući domen na ispravan domen.

Podešavanje sigurnosti poverljivih hostova u Drupal 8

Od januara 2015. Drupal 8 podržava „šablone poverljivih hostova“ gde možete (i treba) da navedete skup regularnih izraza kojima domeni u dolaznim zahtevima treba da odgovaraju. Primer konfiguracije u settings.php izgleda ovako:

$settings['trusted_host_patterns'] = [
  '^www\.example\.com$',
];

Vidite gornju zabelešku o promenama za detaljnije informacije. Ako radite lokalni razvoj, možete (privremeno) blokirati sajt ovom konfiguracijom. U tom slučaju dodajte pattern za '^localhost$'.

Podešavanje poverljivog hosta za MAMP 3

Za lokalni razvoj, MAMP (3.5.2) parametar '^localhost$' izaziva grešku „Ime hosta nije validno za ovaj server“ i sajt se ne učitava. Rešenje je promeniti ga na ime sajta bez broja porta. Na mom test sajtu "drupal8":

$settings['trusted_host_patterns'] = [
  '^drupal8$',
];

ovime je Trusted Host aktiviran.

NAPOMENA: na MAMP 4.2 '^localhost$' radi bez problema.

Podešavanje poverljivog hosta za Acquia Dev Desktop 2 (testirano sa Drupal 8.6.2 i PHP 7.2.8)

Ako koristite Acquia Dev Desktop 2, probajte sledeći trusted host pattern. Promenite "sitename" u ime vašeg sajta:

$settings['trusted_host_patterns'] = array(
    '^sitename\.dd$',
);

Podešavanje poverljivog hosta za XAMPP (testirano sa Drupal 8.4.0 i PHP 7.1.8)

Da biste omogućili trusted host mehanizam, potrebno je da u $settings['trusted_host_patterns'] uključite dozvoljene hostove.

Otvorite fajl settings.php i ažurirajte kod kao u primeru ispod za podešavanje trusted hosta:

$settings['trusted_host_patterns'] = [
  '^localhost$',                 
  '^192\.168\.00\.52$',
  '^127\.0\.0\.1$',
];

Ovde,

  • '^localhost$', dozvoljava sajtu da radi samo sa localhost-om.
  • '^192\.168\.00\.52$', dozvoljava sajtu da radi samo sa određenom IP adresom sistema (različiti sistemi imaju različite IP adrese).
  • '^127\.0\.0\.1$', dozvoljava sajtu da radi sa 127.0.0.1 kao alternativom localhost-u.

Napomena: Ako koristite multisajt, navedite sve host pattern-e koje sajt podržava.

Podešavanje poverljivog hosta za Lando (testirano sa Drupal 8.7.10 i PHP 7.2)

Da biste omogućili trusted host mehanizam, uključite dozvoljene hostove u $settings['trusted_host_patterns'].

Otvorite settings.php i ažurirajte kod kao u sledećem primeru:

$settings['trusted_host_patterns'] = [
  '^'.getenv('LANDO_APP_NAME').'\.lndo\.site$',    # lando proxy pristup
  '^localhost$',                                    # localhost pristup
  '^'.getenv('LANDO_APP_NAME').'\.localtunnel\.me$', # lando share pristup
  '^192\.168\.1\.100$'                             # LAN IP pristup
];

Napomena: Lando kontejner poseduje dodatne varijable okruženja koje možete koristiti za podešavanje ispravnih podataka o bazi. Pogledajte $lando_info=json_decode(getenv('LANDO_INFO'), TRUE); ili proverite phpinfo();.

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.