После всех полезных советов, приведенных здесь, о том, как избежать ваших пользовательских данных, прежде чем помещать их в базу данных, вы должны, как и прежде, подумать над второй стороной проблемы.
Избежать выходов
Это означает, что каждый вывод вашего приложения должен быть экранирован на основе правила этого формата вывода.Например, когда вы что-то выводите для HTML-страницы, вы должны экранировать ее через htmlentites, чтобы любой HTMl, содержащийся в ваших данных, не был html в выходных данных.А для вывода в формате csv вы должны избегать кавычек или запятых, для JSON вы также должны избегать вещей и т. Д. Каждый вывод имеет свои правила.
Эта вещь иногда используется для хранения данных, которые потенциально опасны (код js,HTML-код) в БД, предотвращая только SQL-инъекцию перед вставкой.И затем убедитесь, что он правильно экранирован перед любым выводом.
Другой способ мышления - предотвратить любой js или HTML-код перед хранением базы данных, но вы все равно должны избегать вывода (в случае).
Говоря об фреймворках, вы должны взглянуть на Zend Framework на Zend_Filter, Zend_Validate и функции escape на представлениях.