sadistic_son
1.07.2009, 18:06:30
Witam,
Jest sobie textarea w htmlu. Jak zabezpieczyc sie przed pewna inwazja, zlosliwoscia lub niewiedza userow dotyczaca tresci tego textarea. Mianowicie jesli user wpisze w polu '1234<? 567 ?>89' to zostanie wyswietlone tylko '123489'. Ale to jeszcze nie tragedia. Gorzej jesli w textarea wpisze sie cos co po wyswietleniu (zczytaniu $_POST['textarea'] do zmiennej) moze popsuc dzialanie kodu.
Uzylem juz strip_tags(); ale to usuwa tylko tagi html, a co z phpowymi? Jest taka funkcja?
Albo jeszcze lepiej zeby kazdy znak uzywany w php jakos 'unieszkodliwic'.
Dzieki z gory.
sadistic_son
1.07.2009, 18:31:39
Dzieki za szybka odpowiedz ale ta funkcja nie dziala
A szczerze mowiac bledu znalezc nie moge. Cos jest nie tak z " albo z ' ale nie wiem co.
Bo to wyrwany kod z kontekstu. ;]
Zobacz przyklejony temat o bezpieczeństwie skryptów, tam jest wszystko, czego potrzebujesz.
sadistic_son
1.07.2009, 21:52:09
przbrnąłem przez 10 stron 'bezpieczenstwa skryptów' i niestety nie jestem wciąż usatysfakcjonowany. Owszem sporo tam przydatnych informacji jak GETa zabezpieczyc itp. ale mi chodzi o coś innego.
Inaczej to wyjaśnie, może prościej: Potrzebuje funkcji która uczyni zawartość inputa 'głupoto-odpornym'.
Jeśli w polu <input type="text" name="temat"> lub <textarea name="wypowiedz"> ktoś wpisze np. "jakis temat, jakas<? wypowiedz ?> blabla bla". To $_POST['wypowiedz'] albo $_POST['temat'] beda przyjmowaly wartość stirngu "jakis temat, jakas blabla bla".
Tak więc chodzi mi o to, żeby tak 'obrobić' zawartość tego $_POSTa aby echo $_POST['wypowiedz'] wyświetliło dokładnie to co wpisał user ale nie namieszało w kodzie. Chodzi mi tylko o znaczniki php a nie html.
No i oczywiście nie chodzi mi tylko o same <? ?> , ale równierz o inną potencjalnie niebezpieczną składnię php która nie powinna się znaleźć wewnątrz zmiennej $_POST i winna zostać "unieszkodliwiona" zanim zmienna zostanie poddana obróbce przez dalsze funkcje, mysqla i echo.
Ciężko przewidzieć co wpisze user i tworzenie funkcji podmieniającej np. <? na />? nie ma sensu ponieważ to tylko kropla w morzu tego co ktoś może wpisać do inputa.
PS. Mogłem coś przeoczyć w 'bezpieczenstwie skryptow' i jesli tak to przosze o jakas wskazowke.
THX.
potreb
1.07.2009, 22:33:46
Szukasz igły w stogu siana??
Napisz prosty handler, który będzie przepuszczał jedynie te funkcje, które uznasz za właściwe.
preg_replace" title="Zobacz w manualu PHP" target="_manual
dobrym rozwiazaniem jest html purifier miedzy innymi czysci przeslany kod z ww zankow
http://htmlpurifier.org/