Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Bezpieczeństwo skryptów PHP
Forum PHP.pl > Forum > PHP
Stron: 1, 2, 3, 4, 5, 6, 7
mlattari
Dzieki :-) Chyba będę musiał poczytać :-)

Cytat(bełdzio @ 2.03.2009, 23:36:52 ) *
kombinujesz smile.gif jak chcesz sie zabezpieczyc przed wywolywaniem url kasujacych dane z niewiadomego miejsca to poczytaj o CSRF np na http://www.beldzio.com/bezpieczenstwo-mechanizmu-sesji i generalnie o tokenach, doklejasz sobie do url kasujacego losowe znaki przez co otrzymujesz np usun_podstrone.php?id=4&token=fsd65fsd753, a następnie w usun_podstrone spr czy token z url == token z sesji smile.gif oczywiscie token jest zmieniany co odswiezenie skryptu


Bawiłem się w takie tokeny w zabezpieczeniach typu captcha do komentarzy na serwisach. Hmm... zastanawiam się bo mam pewien serwis który muszę dobrze zabezpieczyć, czy zrobić w nim taką tokenową wędrówkę po całym serwisie.... Uważasz, że zabezpieczałoby to skutecznie przed 'lądowaniem na podstronach z niewłaściwego miejsca' ? czyli to o co mi wcześniej chodziło?
bełdzio
Cytat(mlattari @ 3.03.2009, 13:50:38 ) *
Uważasz, że zabezpieczałoby to skutecznie przed 'lądowaniem na podstronach z niewłaściwego miejsca' ?


tak zalozmy ze wchodzisz na strone profil.php na ktorej jest link do strony usun_konto.php, parametrem tego linku jest token, teraz po wejsciu na strone usun_konto spr czy token z url jest taki sam jak w sesji, jesli tak to znaczy ze user kliknal na odpowiedni link na odpowiedniej stronie
Kocurro
I oczywiście bełdzio dasz sobie czapkę z avatara zerwać, że żadna wtyczka przyśpieszająca przeglądanie stron nie postanowi odczytać z wyprzedzeniem strony usun.php?token=najlepszy_z_najlepszych i nie spowoduje usunięcia danych ?

Pozdr.
Łukasz
bełdzio
generalnie to czapki nie oddam smile.gif a co do wtyczek sie nie wypowiem bo nie do konca wiem o jakie cudenka chodzi smile.gif
Kocurro
Był temat na forum kiedy o tym rozmawialiśmy - nie wiem czy to przypadkiem nie był ten temat.
ucho
To mogło by popsuć wiele rzeczy nie tylko przy korzystaniu z tokenów. Mam nadzieje, że żadna przeglądarka/wtyczka nie robi ładuje w tle innych linków niż oznaczone przez `rel="prefetch"`.
erix
Cytat
wyprzedzeniem strony usun.php?token=najlepszy_z_najlepszych i nie spowoduje usunięcia danych ?

Nie w tym celu powstało zabezpieczenie przez CSRF - chodzi o to, aby np. nieświadoma osoba nie mogła kliknąć na złośliwie wysłany link typu plik.php?akcja=skasujProfil&confirm=1.
marcio
Cytat
Nie w tym celu powstało zabezpieczenie przez CSRF - chodzi o to, aby np. nieświadoma osoba nie mogła kliknąć na złośliwie wysłany link typu plik.php?akcja=skasujProfil&confirm=1.

W sumie jak tak teraz pomyslalem ze maja racje nie wiedzialem ze tak sie mozna bronic przed CSRF.

Wyobrazcie sobie sytuacje jest sobie forum z takim bugiem i jest jakis temat powiedzymy ze forum ktore uzywaja to jakis open-source ktos podaje np link do usuwanie news'a z odpowiednim id ktorys z adminow klika i po news'ie ale gdy token ktory podal napastnik z linku jest inny do nicy z tego tongue.gif w sumie ciekawy jest i atak jak i obrona tongue.gif

Czy mozecie powiedziec jakies inne sytuacje?
erix
A do wikipedii, to Waść zaglądał...? winksmiley.jpg
marcio
Zagladac zagldalem ale nie zawsze w wikipedi jest duzo napisane w sumie jest napisane to sam co ja napisalem czytalem inne linki i atak polega tylko na tym co opisalem przynajmniej z tego co ja wywnioskowalem.

Mowicie zeby dodac mozliwosc takeigo tokena do wszystkich waznych akcji, bo w sumie atak jest latwiejszy do przeprowadzenia niz XSS z kradzieza cookie.
mlattari
Cytat(bełdzio @ 3.03.2009, 14:01:31 ) *
tak zalozmy ze wchodzisz na strone profil.php na ktorej jest link do strony usun_konto.php, parametrem tego linku jest token, teraz po wejsciu na strone usun_konto spr czy token z url jest taki sam jak w sesji, jesli tak to znaczy ze user kliknal na odpowiedni link na odpowiedniej stronie


Wymyśliłem sobie coś takiego

  1. <?php
  2. function checktoken()  {
  3.  if($_SESSION['zeton']!=$_GET['token']) diee_close(); }
  4.  
  5. function generate_token() {
  6. $literki="abcdefghijklmnopqrstuwvxyzABCDEFGHIJKLMNOPQRSTUWVXYZ";
  7. $cyferki="0123456789";
  8. for($tokelen=1;$tokenlen<=32;$tokenlen++) {
  9.   $token.=substr($literki,rand(0,strlen($literki)-1),1).substr($cyferki,rand(0,strlen($cyferki)-1),1);  }
  10. $_SESSION['zeton']=$token;
  11. return $token; }
  12. ?>


no i oczywiście na początku skryptów daję
checktoken();
$token=generate_token();

i wklejam ?token={$token} do linków...

To chyba lepsze niż moje poprzednie (raczej rzeczywiście beznadziejne) rozwiązanie questionmark.gif?
Jeżeli to jest OK to będę musiał to dodać w kilku serwisach.... no i chyba przyda się linuchowy sed do pododawania tokena w linkach :-)
marcio
Nie wiem co robi diee_close() ale jesli nic nie zwraca to moze nie dzialac bo troche nie ma sensu to raz a dwa to jakos kombinujesz ze sklejaniem ciagu i jeszcze nie bedzie on az taki losowy ja 2 dni temu napisac cos takiego jeszcze w praktyce nie uzywalem ale dzialac dziala:
  1. <?php
  2. function InitCsrfSession() {
  3.  
  4.  $InitLenght = rand(1,5);
  5.  $EndLenght = rand(10,20);
  6.  
  7.  return substr(md5(time()), $InitLenght,$EndLenght);
  8.  
  9. }
  10.  
  11.  
  12. function CheckCsrfSession($GetSession) {
  13.  
  14.  ($GetSession == $_SESSION['CSRF']) ? $bool = true : $bool =  false;
  15.  
  16.  return $bool;
  17.  
  18. }
  19.  
  20. //Przypisujesz
  21. $_SESSION['CSRF'] = InitCsrfSession();
  22. ?>
mlattari
No masz racje :-) U mnie jest rzeczywiście mało losowo :-( Chyba będę musiał dodać coś z md5 tak jak u Ciebie. Dzięki za podpowiedź.
erix
Cytat
no i chyba przyda się linuchowy sed do pododawania tokena w linkach :-)

ob_start" title="Zobacz w manualu PHP" target="_manual + preg_replace" title="Zobacz w manualu PHP" target="_manual
marcio
Cytat(erix @ 6.03.2009, 22:37:26 ) *

O co chodzi^^questionmark.gif
mlattari
Prawdopodobnie można zbuforować zawartość stronki, podmienić określone wyrażenia i zapisać ponownie :-)
erix
Tak, jak to robi mechanizm sesyjny dopisując SID w przypadku włączonego rewriter_tags. winksmiley.jpg
looooonger
przejrzałem posty w tym temacie, i ogólnie to wszystkie mówią o trochę bardziej skomplikowanych sytuacjach niż te, z którą ja mam do czynienia tzn:

Strona jest praktycznie statyczna, a php używam tylko do zaincludowania nagłówka i stopki, ale nazwy plików nie pochodzą z posta/geta tylko są zahardcodowane. Czy ciągnie to za sobą jakieś niebezpieczeństwo? Wolę się upewnić. Drugie pytanie, czy mechanizm google search engine może wpłynąć na bezpieczeństwo strony? Uzywam go w ten sposób:

Na stroni z wynikami:
  1. <div id="cse-search-results"></div>
  2. <script type="text/javascript">
  3. var googleSearchIframeName = "cse-search-results";
  4. var googleSearchFormName = "cse-search-box";
  5. var googleSearchFrameWidth = 600;
  6. var googleSearchDomain = "www.google.com";
  7. var googleSearchPath = "/cse";
  8. <script type="text/javascript" src="http://www.google.com/afsonline/show_afs_search.js"></script>

formatka wyszukiwarki:


  1. <form action="szukaj.php" id="cse-search-box">
  2. <div>
  3. <input type="hidden" name="cx" value="004632895002302782970:fakn9rzjcvi" />
  4. <input type="hidden" name="cof" value="FORID:11" />
  5. <input type="hidden" name="ie" value="UTF-8" />
  6. <input type="text" name="q" size="31" />
  7. <input type="submit" name="sa" value="Szukaj" />
  8. </div>
  9. </form>
  10.  
  11. <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&lang=pl"></script>
bełdzio
Cytat(looooonger @ 28.03.2009, 23:09:52 ) *
Czy ciągnie to za sobą jakieś niebezpieczeństwo? Wolę się upewnić. Drugie pytanie, czy mechanizm google search engine może wpłynąć na bezpieczeństwo strony?

ad1. poki nie pobierasz niczego z zewnatrz skryptu wsio jest ok
ad2. nie - no chyba ze Googla shakuja smile.gif
nieraczek
Chciałem dowiedzieć się jak zabezpieczać się przed atakami CSRF więc zrobiłem testową aplikację do tego celu:
użytkownik może dodawać i usuwać znajomych oraz pisać komentarze a w nich umieszczać linki. Użytkownik może usunąć ze znajomych użytkownika klikając na link 'usuń' w swoim profilu w znajomych - na końcu linka jest podawany id znajomego do usunięcia:
  1. <a href="/profil/znajomi/usun/<?php echo $z->getIdentyfikator() ?>" >usuń ze znajomych</a>


Po kliknięciu w linka, id jest oczywiście zamieniane na liczbę całkowitą, jest sprawdzenie czy w ogóle podano id, czy użytkownik o takim id istnieje oraz czy zalogowany użytkownik, który chce usunąć znajomego ma w swoich znajomych użytkownika o danym id.

Użytkownik o id=2 ma w znajomych uzytkownika o id=4.

Jako użytkownika o id=999 dodałem komentarz:
"Bla, bla,<IMG src="/profil/znajomi/usun/4"> bla, bla"

Następnie zalogowałem się jako użytkownik o id=2 i wszedłem na stronę z tym komentarzem, w skutek czego nie zobaczyłem oczywiście obrazka a z moich znajomych został usunięty użytkownik o id=4 bez mojej wiedzy i zgody - klasyczny przykład ataku CSRF.

Wymyśliłem więc sobie, że żeby usunąć użytkownika ze znajomych trzeba to potwierdzić - do czego użyłem ajaxa:
  1. <a href="/profil/znajomi" onclick="potwierdzUsuniecieZnajomego(<?php echo $z->getIdentyfikator() ?>); " >usuń ze znajomych</a>


Po kliknięciu na linka wyskakuje messagebox z prośbą o potwierdzenie, w przypadku potwierdzenia do funkcji php z funkcji javascript jest przesyłany id użytkownika do usunięcia ze znajomych metodą post, w funkcji php jest sprawdzane czy żądanie przyszło metodą post itd. czego skutkiem jest usunięcie osoby ze znajomych.

Po wyłaczeniu w przeglądarce javascripta usunięcie uzytkownika ze znajomych nie jest możliwe, ale:
"Bla, bla,<IMG src="/profil/znajomi/usun/4"> bla, bla" już nie działa biggrin.gif biggrin.gif

Czy to wystarczające zabezpieczenie przed atakiem CSRF ?
bełdzio
nie przeciez zamiast odwolywac sie do adresu /profil/znajomi/usun/4 moge odwolac sie do adresu strony z potwierdzeniem, wlasnie kopiuje na blogaska notke o csrf tak wiec rzuc okiem za jakies 5 - 10 min smile.gif
nieraczek
bełdzio wielkie dzięki - dzięki Tobie nareszcie zrozumiałem jak zabezpieczać się przed tymi atakami smile.gif Super artykuł.

------------------
@edycja


Mam jeszcze pytanie odnośnie ataków CSRF - w przypadku linków usuwających coś z bazy danych wystarczy, że atakujący w komentarzu wpisze np.:
  1. <img src="http://adres.pl?usun=10" />

Ofiara po wejściu na tę stronę z takim wpisem usunie nieświadomie coś tam o id=10. W takim wypadku rozumiem doklejanie unikatowego tokena do linku i potem go sprawdzanie.

Natomiast nie bardzo rozumiem dodawania do formularza ukrytego pola z tokenem. Co atakujący miałby wpisać żeby ofiara po wejściu na stronę z tym niebezpiecznym wpisem została nieświadomie przekierowana na stronę z formularzem i nieświadomie kliknęła na button typu submit ? To jest chyba niemożliwe w przypadku formularzy ?
bełdzio
wystarczy ze stworze na swojej stronie formularz z ukrytymi inputami i widocznym przyciskiem "WYgraj 100 000 pln"; user klika na button i na właściwy serwer przesyłane są dane, których autorem jest nasza ofiara smile.gif
nieraczek
A jak macie formularze, np. żeby było bardziej obrazowo: formularz do wysyłania odpowiedzi na otrzymane prywatne wiadomości:

  1. <form method="post" action="/wyslij_odpowiedz/na_wiadomosc/68/do_uzytkownika/11">
  2. ..........
  3. </form>


To te numery - id w action można pozmieniać w dodatku do firefoxa: firebug. Więc po zatwierdzeniu formularza też należy sprawdzać czy dany użytkownik dostał wiadomość o danym id od danej osoby o danym id itd. ?
pyro
Najprostszym zabezpieczeniem przed atakami CSRF jest poprostu dodawanie id sesji i sprawdzanie jej. Np:

  1. <?php
  2. /*
  3. ...
  4. tu wysylam jakis formularz i jako hidden daję id sesji
  5. ...
  6. */
  7.  
  8. if(empty($_POST['sess_id']) || $_POST['sess_id'] != session_id())
  9. {
  10. die('Czy napewno nie próbujesz mi zaszkodzić Panie majster?');
  11. }
  12. ?>
nieraczek
Ale nie chodzi mi o ataki csrf tylko ataki wykonane programem firebug, dzięki któremu można dowolnie modyfikować kod html strony i dzięki temu zmieniać ID w akcji formularza, co w konsekwencji mego poprzedniego posta spowoduje wysłanie odpowiedzi do innej osoby niż nadawca danej wiadomości. Inny przykład to jak edytujemy dany post na jakimś forum i w akcji formularza za pomocą firebuga zmienimy ID to w ten sposób moglibyśmy zmodyfikować posta innej osoby jeśli po zatwierdzeniu formularza nie sprawdzimy czy dany użytkownik edytuje swój własny post ufając temu, że akcja formularza nie została zmieniona. Chodzi mi o to, że akcje formularza są tak samo niebezpieczne jak adresy URL i łatwe do modyfikacji programami typu firebug. Rozumie ktoś czy dać przykład ? tongue.gif
Crozin
Rozumie. Tylko nie widzę pytania... bo na jedyne jakie postawiłeś sam sobie odpowiedziałeś.
pyro
Dopisująć się do Crozina:

@nieraczek, wygląda na to, że gadasz sam ze sobą withstupidsmiley.gif
bełdzio
Cytat(nieraczek @ 12.06.2009, 09:47:02 ) *
To te numery - id w action można pozmieniać w dodatku do firefoxa: firebug. Więc po zatwierdzeniu formularza też należy sprawdzać czy dany użytkownik dostał wiadomość o danym id od danej osoby o danym id itd. ?

jakie są ograniczenia na wysylanie prywatych wiadomosci? bo jesli moge wyslac do kazdego to co za problem czy klikne w jego profilu "napisz wiadomosc" czy sobie zmienie w formie?
Crozin
@bełdzio: A co jak ustawisz ID użytkownika, które nie istnieje? W przypadku gdy masz ustawione klucze obce w tabeli piękny błąd wywali.
Poza tym luki, które nawet potencjalnie są niegroźne powinny być szybko poprawiane.
bełdzio
Cytat(Crozin @ 12.06.2009, 17:44:03 ) *
@bełdzio: A co jak ustawisz ID użytkownika, które nie istnieje? W przypadku gdy masz ustawione klucze obce w tabeli piękny błąd wywali.
Poza tym luki, które nawet potencjalnie są niegroźne powinny być szybko poprawiane.

1. wyslanie wiadomosci do nieistniejacego usera to nie luka
2. co za problem przechwycic blad i obsluzyc go? co za problem przed wyslaniem spr czy user istnieje? insert ignore? smile.gif
Zgredzik
Czesc, mam pytanie dotyczace tablicy $_POST. Wiec napisalem wyrazenie regularne ktorego uzywam w funkcji preg_match.
Kod
preg_match('#^[a-z0-9]{5,15}$#i',$_POST['dana'])

Wiec wyrazenie to sprawdza czy tablica $_POST['dana'] przechowuje wartosc alfanumeryczna o dlugosci od 5 do 15 znakow, funkcja zwraca false lub true w przypadku gdy zwroci true wartosc z tablicy POST chce umiescic w bazie danych. Czy ten preg_match uchroni mnie przed kazdym atakie z pola formularza o nazwie "dana"? Czy moze lepiej zastosowac ctype_alnum, strlen i po otrzymaniu TRUE bawic sie dalej z ta zmienna?

Bo tak na chlopski rozum to powinno bronic smile.gif
cojack
Nie wiem było nie było, erix mnie już zbeształ że leniwy jestem i mi się szukać nie chce, to się odkupuje i kopie linkiem do funkcji zabezpieczającej przed atakami typu XSS:
http://snipplr.com/view/9596/secure-advanc...ip-tagsantixss/

pozdro.
nieraczek
A mogę wiedzieć w czym ta funkcja _Strip_Tag() podana przez cojacka w linku i inne tego typu funkcje pisane w tym wątku mają być lepsze od rdzennej strip_tags() napisanej przez osoby zajmujące się rozwojem języka PHP - osoby z wieloletnim, olbrzymim doświadczeniem oraz wiedzą ? Czyli jak rozumiem uważacie, że Wasza własna funkcja strip_tags() będzie lepsza od tej opracowanej przez ekspertów PHP ?
cojack
Nie rozumiesz... strip_tags usuwa znaczniki html, http://pl2.php.net/strip_tags
a ten link co ja podałem wywala nam dodatkowo encje z linków. skrypty js etc..
nieraczek
A po co wywalać skrypty js skoro strip_tags() sprawia, że te skrypty - a właściwie już nie skrypty przestają być groźne, np.:
  1. <?php
  2. echo strip_tags("<script>alert('test')</script>");
  3. ?>

daje nam: alert('test')

  1. <?php
  2. echo strip_tags("<a href='test'>test</a>");
  3. ?>

daje nam: test

Nie bardzo widzę zwiększenia bezpieczeństwa.
erix
  1. <a href='test' onclick="alert('test');">test</a>

I Twoja teoria została obalona. tongue.gif

Chyba nie czytałeś tego wątku od początku...
nieraczek
Nie bardzo rozumiem - zrobiłem specjalnie formularz żeby sprawdzić:
  1. <?php
  2. if(isset($_POST['przycisk']))
  3. {
  4. echo strip_tags($_POST['pole']);
  5. //echo $_POST['pole'];
  6. }
  7. ?>
  8.  
  9. <form action="index.php" method="post">
  10. <input name="pole" type="text" />
  11. <input name="przycisk" type="submit" />
  12. </form>


Bez uzycia strip_tags() dostaję link po kliknięciu na który wyskakuje mi alert, ALE po użyciu strip_tags() dostaję zwykły tekst 'test'. Więc ? tongue.gif
Crozin
IMO strip_tags to jedna z durniejszych funkcji. Ktoś coś wpisuje, patrzy... a tu część tekstu ucięta. Zdecydowanie lepiej użyć htmlspecialchars" title="Zobacz w manualu PHP" target="_manual.
nieraczek
Ok Crozin - ale istnieje w końcu coś co obali moją teorię o tym, że nie trzeba zastępować strip_tags() swoją własną bezpieczniejszą funkcją w stylu strip_tags() czy nie ? tongue.gif Wpisanie jakiego kodu w tym formularzu rozłożyłoby tę funkcję na łopatki ? tongue.gif
kamil4u
Zdecydowanie jestem za ~Crozin-em , więcej w tym wątku: http://forum.php.pl/index.php?showtopic=119475
nieraczek
Ale chodzi o to, że w całym tym wątku co kilka postów ludzie próbują pisać własne wersje tych dwóch funkcji: htmlspecialchars() i strip_tags() i podają swoje wersje tych funkcji - chciałbym więc po prostu dowiedzieć się w czym ich własne funkcje są bezpieczniejsze od tych opracowanych przez ekspertów PHP smile.gif
erix
Cytat
Nie bardzo rozumiem - zrobiłem specjalnie formularz żeby sprawdzić:

Blah, pomyślałem o czym innym. [;
nieraczek
"Blah, pomyślałem o czym innym. [; " - wiem o czym myślałeś, dlatego zrobiłem formularz ;] hehe biggrin.gif
bełdzio
Cytat(nieraczek @ 18.06.2009, 18:53:30 ) *
Ale chodzi o to, że w całym tym wątku co kilka postów ludzie próbują pisać własne wersje tych dwóch funkcji: htmlspecialchars() i strip_tags() i podają swoje wersje tych funkcji - chciałbym więc po prostu dowiedzieć się w czym ich własne funkcje są bezpieczniejsze od tych opracowanych przez ekspertów PHP smile.gif

tru tru smile.gif w zdecydowanej wiekszosci przypadkow pisanie wlasnych systemow filtracji nie sprawdza sie na polu walki :-) zawsze pominie sie 1 rzecz i cale zabezpieczenie idzie sie walic :-)

tak wiec tak gdzie jest to niewskazane, a nawet niezalecane lepiej nie wymyslac swoich tworow smile.gif

kiedys zreszta pisalem o tym na blogu, ktorego jestem jedynym czytelnikiem http://www.beldzio.com/sens-tworzenia-wlas...temow-filtracji ;-)
WebCM
Cytat
ludzie próbują pisać własne wersje tych dwóch funkcji: htmlspecialchars() i strip_tags()
Napisałem na potrzeby skryptu CMS nakładkę na htmlspecialchars(), która zajmuje się jeszcze cenzurą słów - http://pastebin.pl/9298 - mam nadzieję, że to nie jest złe podejście. BTW nie implementuję zaawansowanych mechanizmów cenzury. smile.gif

Co do strip_tags - webmasterzy często nadużywają tej funkcji. Wywołują ją zamiast htmlspecialchars() i myślą, że ich skrypt jest teraz bezpieczny. Kod HTML pochodzący z zewnątrz należy po prostu zamienić na encje. Funkcja czasami się jednak przydaje - gdy trzeba wyświetlić czysty tekst bez formatowania i bez kodu HTML.
cojack
Ale macie problemy, jak komuś jest potrzebne strip_tags to go użyje mi np do routingu jest potrzebny i go używam ile wlezie, w dodatku z joomli zakosiłem parę wyrażen regularnych, o to one winksmiley.jpg

  1. <?php
  2. if(preg_match('/mosConfig_[a-zA-Z_]{1,21}(=|%3D)/',$strInput))
  3.            {
  4.                $strInput = preg_replace('/mosConfig_[a-zA-Z_]{1,21}(=|%3D)/','',$strInput);
  5.            }
  6.            if(preg_match('/base64_encode.*(.*)/',$strInput))
  7.            {
  8.                $strInput = preg_replace('/base64_encode.*(.*)/','',$strInput);
  9.            }
  10.            if(preg_match('/(<|%3C).*script.*(>|%3E)/',$strInput))
  11.            {
  12.                $strInput = preg_replace('/(<|%3C).*script.*(>|%3E)/','',$strInput);
  13.            }
  14.            if(preg_match('/GLOBALS(=|[|%[0-9A-Z]{0,2})/',$strInput))
  15.            {
  16.                $strInput = preg_replace('/GLOBALS(=|[|%[0-9A-Z]{0,2})/','',$strInput);
  17.            }
  18.            if(preg_match('/_REQUEST(=|[|%[0-9A-Z]{0,2})/',$strInput))
  19.            {
  20.                $strInput = preg_replace('/_REQUEST(=|[|%[0-9A-Z]{0,2})/','',$strInput);
  21.            }
  22. ?>


Śmiało, teraz mogą mi w gecie wsadzac co chcą, imo nie dadza rady.
Crozin
A mnie zastanawia po jakie licho Ci preg_matche w tym.
legalizetrawka
Co wy na to, żeby zamiast backslashowania dane wysyłane do MySQL zakodować w base64 i w takiej postaci je trzymać w bazie? A przy wyświetlaniu odkodować i np. usunąć tagi html?
Fifi209
Cytat(legalizetrawka @ 20.07.2009, 12:43:56 ) *
Co wy na to, żeby zamiast backslashować dane wysyłane do MySQL zakodować w base64 i w takiej postaci je trzymać w bazie? A przy wyświetlaniu odkodować i np. usunąć tagi html?


Tylko jaki ma to sens? smile.gif Po co kombinować ? Dasz backslashe i po sprawie. ;d
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.