Witam,
mam pewien problem, zapewne każdy kto zna php wie jak ważne jest filtrowanie danych przed wszelakimi typami ataku xss, sqj injenction itd...
aby się przed tym uchronić po prostu filtrujemy wszelkie zmienne pisząc prostą klasę i dodając ją dodając ją do naszego projektu filtrujemy nie każda zmienną z osoba tylko hurtem (ciasteczka, sesje, posty, gety, globalne itd.) i klasa robi to za nas za każdym razem a wystarczy ją wywołać tylko raz.
A teraz chciałbym to przełożyć na delphi.
Tzn. chciałbym aby funkcja, procedura, klasa bądź komponent raz umieszczony bądź zainicjowany robił to samo w naszym projekcie... ale co i przed czym filtrować ? prosty przykład. program pobiera dane od usera i zapisuje je do zmiennej bądź tablicy... ale co jeśli wprowadzone przez niego dane mają zostać odrzucone bo wpisał błędne albo wpisał takie jakie "zabronimy" ?
Nie interesuje mnie sprawdzanie każdej zmiennej, tablicy i stałej z osobna... ponieważ zmiennych może być tysiące a tablice mogą być tworzone dynamicznie...
Hmm może sprawdzać dane na wejściu w locie ? ale problem jest taki, że trzeba by "przeskanować" wszystkie strumienie, bo można podać dane z pliku bądź z klawiatury.
Istniej może jakaś metoda odwołania się do wszystkich zmiennych w programie ? wtedy wystarczyło by porównać z zakazanymi danymi i już... ale wszystko musiało by się dziać przed zapisem danych do zmiennej / tablicy bądź przed użyciem.
Ale wszystko musiało by dziać się z automatu tzn. powinno działać od samego początku wraz z uruchomieniem programu...
Jedna z moich wizji wygląda mniej więcej tak...
Odczytywane są wszelkie strumienie danych, przez pewną funkcje są porównywalne z zakazanymi treściami i dopiero później ładowane są w zmienną bądź tablice... wszystko w locie...
Gdy zmienimy wartości zakazane tzn. dodamy co ma jeszcze filtrować, skrypt ma przelecieć po wszystkich tablicach i zmiennych i przefiltrować je...
Nie interesuje mnie cenzurowanie wyświetlanego tekstu...
Ma ktoś jakiś pomysł, gotowy skrypt ? być może sam kiedyś musiałeś użyć czegoś takiego ?
jeśli coś jest nie jasne proszę pytać, próbowałem opisać to w miarę przyzwoicie :)