Czy Markdown (z strip_tags) jest wystarczający, aby zatrzymać ataki XSS?
Pracuję nad aplikacją internetową, która umożliwia użytkownikom wpisywanie krótkich opisów pozycji w katalogu. Zezwalam na Markdown w moich polach tekstowych, aby użytkownicy mogli wykonać pewne formatowanie HTML.
Funkcja oczyszczania tekstu usuwa wszystkie znaczniki z dowolnego wprowadzonego tekstu przed wstawieniem go do bazy danych:
public function sanitizeText($string, $allowedTags = "") {
$string = strip_tags($string, $allowedTags);
if(get_magic_quotes_gpc()) {
return mysql_real_escape_string(stripslashes($string));
} else {
return mysql_real_escape_string($string);
}
}
Zasadniczo wszystko, co przechowuję w bazie danych, to Markdown - żaden inny HTML, nawet „podstawowy HTML” (jak tutaj w SO) nie jest dozwolony.
Czy zezwolenie na obniżki cenowe będzie stanowiło zagrożenie dla bezpieczeństwa? Czy przecena może być XSSed, nawet jeśli nie ma tagów?