Umożliwiamy użytkownikom przeszukiwanie bazy danych za pomocą pojedynczego wpisu tekstowego i mam trudności z filtrowaniem niektórych łańcuchów dostarczanych przez użytkownika.Sprawdzanie poprawności danych wprowadzanych przez użytkownika lub
Na przykład, jeśli użytkownik przedkłada:
��������� lcd SONY
(Zauważ, że 's?) Muszę anulować wyszukiwanie.
ja zawierać zakodowane base64 wersję powyższego łańcucha owinięty w górę tak, że jego proste run:
print(base64_decode("1MfLxc/RwdPHIGxjZCBTT05Z"));
mam ignorowane takich wejść wcześniej, ale teraz (nie wiem, dlaczego) po prostu sobie sprawę z zapytania do bazy danych mysql trwa prawie wiecznie, więc jest to teraz priorytetem.
Innym przykładem podkreślić, że używamy UTF-8 i mb_detect_encoding nie pomaga wiele:
print(base64_decode("zqDOm8+Fzr3PhM63z4HOuc6/IM+Bzr/Phc+HzyU="));
ΠΛυντηριο ρουχ�%
Więc:
- jak mogę wykryć/filtrować tych wejść?
- W jaki sposób generowane jest to wejście?
Odrzucanie tych danych wejściowych jest niewłaściwe. Musisz zrozumieć, dlaczego mają one niekorzystny wpływ na wydajność. – SLaks
To jest pierwsza linia obrony. Utknąłem w tej chwili, więc będę badał problem z wydajnością bazy danych, dopóki nie otrzymam jasnego pomysłu. – zaf
Czy mówisz, że użytkownik ręcznie wprowadza znak zastępczy? http://www.fileformat.info/info/unicode/char/FFFD/index.htm –