Autor Zpráva
fmedic
Profil
Zdravím,

celý svůj systém jsem budoval na hostingu Forpsi.com a teď nastal problém. Zabezpečení mám udělané jednoduše tak, že na začátku každého souboru je podmínka, pokud session abc obsahuje def, zobrazí se obsah a pokud neobsahuje, přesměruje se pomocí header(); na přihlašovací stránku. Nevím, jak jinak to řešit, ale tohle se mi zdá jako nejlepší řešení.. Když jsem ale systém přesunul na jiný server, přesměrování nefungovalo.. Trochu jsem googlil a zjistil jsem, že před header(); nesmí být žádný výstup, jedině pokud se na začátek stránky umístí ob_start();, to by pro mě ale znamenalo, že bych musel změnit kódování stránky, neboť UTF-8 již samo přidává na začátek souboru pár neviditelných znaků.. Chci se tedy zeptat, zda máte někdo lepší řešení pro zabezpečení, nebo jestli musím soubory překódovat a přidat ob_start();y..

Děkuju za odpověď (:
Davex
Profil
Jestliže běží na novém webhostingu Apache, tak si zapni buferování těmito řádky v souboru .htaccess:

php_flag output_buffering On

Nebo hledej, zda lze buferování zapnout v administraci hostingu nebo vlastním konfiguračním souboru php.ini, .user.ini apod.


Krom toho můžeš soubory nechat v UTF-8 a uložit je bez BOM.
Joker
Profil
Druhá varianta:
fmedic:
neboť UTF-8 již samo přidává na začátek souboru pár neviditelných znaků
Ne nezbytně, záleží na nastavení editoru.
DarkMeni
Profil
s BOM jsem měl nedávno problém, ale v Notepadu++ je funkce která to bezproblémově převede na "ANSI as UTF-8" to je něco jako UTF-8 bez těch neviditelných znaků, akorád je tam pak zase jiný problém se zdrojovým kódem, ale na ten se většinou nikdo nekouká.

ALE: jestliže to přesměrování mělo sloužit jako ochrana třeba před nedovoleným vstupem do souboru který je dostupný jen pro přihlášené a nebo je to něco jako řidič webu který se připojí k databázi a obsahuje některé užitečné fuknce tak pak možná stačí die(header("Location: login.php")); ale to mě jen tak v rychlosti napadlo a nevim jestli to něco udělá

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0