Autor Zpráva
Pilda
Profil
Mohl bych se zeptat co znamená přesně návrat vozíku? Jakej je rozdíl mezi ním a novým řádkem, případně ?

Jak chránit uživatelské vstupy proti CRLF injection?
Miloš
Profil
U starého psacího stroje bylo možné začít psát od začátku nového řádku tehdy, když se otočil válec (odřádkování, od toho byl odvozen kód LF) a vozík s válcem se vrátil na původní pozici (odvozen kód CR).
Novýá řádek v textových souborech representují následující znaky:
Dos/Windows: CR LF (dvojice znaků)
Unix/Linux: LF
Mac: CR

Pokud jde o druhý dotaz, tak ten snad někdo jiný.
Pilda
Profil
Aha, ale samotný návrat vozíku bez odřádkování ve Windows nic neudělá, že? A kdy teda používat pro formátování kódu v PHP návrat vozíku, kdy odřádkování a kdy obojí? Do teďka jsem si myslel, že ten návrat vozíku je nějaká blbost a třeba ani neexistuje a ve svých scriptech jsem s nim nepočítal (třeba nahrazení
za <br />) a přesto všechno funguje jak má...

Co teda používat v praxi? Nějak to stejně nechápu :(
Miloš
Profil
Pokud se příliš nepletu, ve scriptech se sice uvádí jen \n (tedy LF) jako nový řádek, ale PHP to jednotlivé platformě vysvětli po jejímu.

Rozdíl mezi jednotlivými odřádkováními lze pod Windows např. vyzkoušet pomocí PSPadu (který řádkuje tak, jak je přáno) – uložit soubory s CR a s LF ukončením a oba pak otevřít v notepadu. V obou případech místo nového řádku zobrazí jen jakousi „hubenou kostičku“ a neodřádkuje.
llook
Profil
PHP to jednotlivé platformě vysvětli po jejímu
Nnn, ve skriptech se většinou uvádí \n, protože tomu všechny cílové aplikace porozumí. Psát \r\n ničemu nevadí, ale je to většinou zbytečné (akorát do hlaviček HTTP požadavků pro jistotu \r\n píšu - Apache sice \n pochopí, ale RFC vyžaduje \r\n a sichr je sichr).

ad CRLF injection) To snad vysvětlují na té odkázané stránce, čemu konkrétně nerozumíš?
Pilda
Profil
Na té stránce akorát doporučujou ten jejich placený program :)

Zajímá mě přesný zápis php scriptu, který před tím uchrání.

Napadá mě třeba toto:



$uzivatelsky_vstup = $_GET["input"];
$uzivatelsky_vstup = addslashes($uzivatelsky_vstup);
$_zjisti_crlf = StrCSpn($uzivatelsky_vstup, "\r\n");
$final_string = SubStr($uzivatelsky_vstup, 0, $_zjisti_crlf);
echo $final_string;


Bude to fungovat? Nebo to jde řešit elegantněji? Řeší to vůbec někdo? Já bych to ani tak neřešil, ale dal jsem si prohledat web tim jejich programem a našlo mi to jako bezpečnostní díru v jednom scriptu.

Edit:
OT: názorný příklad klamavé reklamy. Ty stránky mají v title "CRLF - Jak najít bezpečnostní chybu & jak ji opravit" a když se přes několikráté doporučení jejich prgramu co to akorát najde dostanete k onomu "Ochrana před útoky typu CRLF", tak tam je akorát ve třech řádcích napsaný, že se musí ošetřit vstupy :D To by jeden fakt nevěděl :)
Toto téma je uzamčeno. Odpověď nelze zaslat.