Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Całościowe filtrowanie danych
Kildyt
post
Post #1





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

Ostrzeżenie: (0%)
-----


Cześć! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Piszę aktualnie nowe jądro i chcę przy użyciu jeden funkcji przefiltrować dane pod wieloma względami (html, mysql itp.).

Poczytałem trochę na w internecie o filtrowaniu danych, nawet znalazłem bardzo prosty i zrozumiały wykres: link w .pdf.

Napisałem funkcję filter i wygląda ona tak:
  1. <?php
  2. function filter($give, $type) {
  3.    if (!$type OR is_string($type)) {
  4.        $error = new error;
  5.        
  6.        $error -> show('Nie podałeś typu zmiennej podczas filtrowania danych! 1 - string (tekst), 2 - int (liczba całkowita)', '1');
  7.    }
  8.    
  9.    if ($type == "2") {
  10.        $type = "is_int";
  11.    }
  12.    
  13.    if ($type == "1") {
  14.        $type = "is_string";
  15.    }
  16.    
  17.    
  18.    if ($type($give)) {
  19.        return $give;
  20.    } else {
  21.        $error = new error;
  22.        
  23.        $error -> show('Zawartość zmiennej różni się od jej typu! 1 - string (tekst), 2 - int (liczba całkowita)', '1');
  24.    }
  25. }
  26. ?>


Przykładowe zastosowanie funkcji to:
  1. <?php
  2. $title = filter($_GET['title'], 1);
  3. $id = filter($_GET['id'], 2);
  4. ?>


Spis zastosowanych funkcji do przefiltrowania zmiennej (w kolejności zastosowania): stripslashes, escapeshellcmd, strip_tags, htmlspecialchars, mysql_real_escape_string, urlencode.

Jak myślicie, czy ten skrypt jest poprawny? Zmienić szereg wykonywanych funkcji, może jakąś dodać, lub usunąć?

Ten post edytował Kildyt 4.10.2008, 15:34:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zimi
post
Post #2





Grupa: Zarejestrowani
Postów: 233
Pomógł: 9
Dołączył: 3.06.2007

Ostrzeżenie: (0%)
-----


nie jestem sobie w stanie wyobrazić powodu dla którego potrzebowałbym zastosować taką funkcję...
każda funkcja którą użyłeś w łańcuchu jest przeznaczona do innego celu chyba że masz zamiar
pobrany z adresu ciąg wrzucić do bazy danych przetwarzając niebezpieczne znaki (względem XSS) na encje usuwając tagi (których nie będzie na skutek działania poprzedniej funkcji) uruchomić polecenie z konsoli wyrzucając przy okazji escape'owanie które dodałeś...

w skrócie ta funkcja nie ma sensu... no chyba że czegoś nie wiem... co ostatnio często się zdarza...

każdą z funkcji z łańcucha używasz w innym celu... jedną(z reguły) gdy chcesz usunąć znaki ucieczki dodane automatycznie przy odpowiednich ustawieniach PHP, drugą gdy chcesz coś odpalić z konsoli, dwie kolejne przeciw atakom XSS, piątą przeciw atakom na bazę danych, a szóstą aby adresy url były odpowiednio zakodowane

to że je sobie wszystkie połączysz nie znaczy że Twoja aplikacja będzie bezpieczna..., znaczy tylko że nie wiesz co napisałeś...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 09:17