Заблуждение состоит в том, что вы хотите избежать ввода, что неверно. Вы должны фильтровать выходные данные (и база данных также является выходной).
Это означает, что при отправке формы вы используете mysql_real_escape_string()
для отправки (вывода) данных в базу данных и htmlspecialchars()
для вывода содержимого на экран. Тот же принцип применим к регулярным выражениям, где вы будете использовать preg_quote()
и так далее.
Независимо от того, откуда поступают данные, вы должны избегать их в контексте того, куда вы отправляете их.
Поэтому для предотвращения XSS-атак вы должны использовать htmlspecialchars()
/ htmlentities()
. mysql_real_escape_string
не имеет ничего общего с XSS (но вы все равно должны использовать его при отправке данных в базу данных).