„Wystarczająca dezynfekcja” dokładnie zależy od środowiska, o którym mówisz. Oczyszczanie dla MySQL powinno być uważane za całkowicie oddzielne od dezynfekcji danych wyjściowych w sieci i powinieneś obchodzić się z nimi osobno, aby uniknąć wielu kłopotów.
Oczyszczanie dla MySQL
mysql_real_escape_string()
oczyści fragment danych i sprawi, że umieszczenie go w zapytaniu SQL będzie bezpieczne.- Wszelkie inne rodzaje szkodliwych danych, takie jak znaczniki HTML wewnątrz ciągu, należy bezwzględnie zignorować. Próba manipulowania nim w tym miejscu doprowadzi cię do bólu głowy, gdy będziesz próbował "zmanipulować" nim później po usunięciu go z bazy danych. Złe „dane internetowe” nie mogą uszkodzić Twojej bazy danych.
Odkażanie przed wyjściem
htmlspecialchars($val)
w czasie wyjścia uniemożliwi renderowanie złośliwych tagów, ponieważ<
i> znaki są konwertowane na ich reprezentacje encji i nie są renderowane jako ograniczniki znaczników.
- Użyj
ENT_QUOTES
modyfikator, jeśli wyprowadzasz coś, co znajduje się wewnątrz cytowanego atrybutu elementu HTML, takiego jak
To powinno być wszystko, czego potrzebujesz, chyba że masz specjalne wymagania. strip_tags()
tak naprawdę nie powinien być używany do oczyszczania, ponieważ może zostać oszukany przez źle sformatowany kod HTML. Oczyszczanie to godny cel, a jeśli możesz trzymać swoje konteksty oddzielnie, będziesz mieć mniej problemów z manipulacją danymi między nimi.