Не устранить ошибки, исправить ошибки.
Если у вас SQL-инъекция, это связано с тем, что ваш уровень доступа к базе данных неверен. Внедрение стратегии смягчения, например, фильтрация параметров с помощью таких ключевых слов, как «SELECT» или «; DROP DATABASE "- это неправильная вещь. Вместо этого переходите к методу доступа к базе данных, который автоматически обеспечивает соответствующие входящие параметры для соответствующей базы данных. Тогда вы не только устраните проблему, но и убедитесь, что приложение работает правильно, когда сталкиваются с данными «O'Reilly» или другими проблемами.
Если у вас есть инъекция HTML, ведущая к XSS, ваша стратегия шаблонов поощряет вас слепо выводить неэкранированный текст. Не пытайтесь смягчить ситуацию, обнаружив и отклонив данные «<», вы пропустите некоторые поля, и вы не знаете обо всех особых случаях, не говоря уже о том, что у кого-то есть веская причина для ввода «< ». Вместо этого исправьте его, изменив вашу систему шаблонов или стиль, чтобы в любой момент, когда вы выводили текст, вы всегда выходите из HTML, как само собой разумеющееся, даже если данные «не могут» содержать специальные символы.
Что касается проблем безопасности, вы можете уйти от игнорирования, что зависит от вашего бизнеса и от того, насколько клиенты полагаются на него. Есть, в общем, четыре уровня компромисса затрагивающих веб-приложений (которые я предполагаю, что вы говорите о том, как вы упоминаете инъекции SQL и XSS):
на уровень сервера компромисс. Как правило, из плохо защищенных оболочек и учетных записей FTP, а также повышенные компрометации на уровне приложений. Приложения с запущенной системой() с предоставленными пользователем данными часто плохо скомпрометируются, а также SQL-инъекциями, когда база данных является плохо настроенным SQL Server (с использованием xp_cmdshell). Злоумышленник может получить доступ к оболочке на сервере и может с радостью отсылать загрузку спама и попыток взлома на других серверах. Это неприемлемо для любого бизнеса.
Компромисс на уровне приложения. Обычно SQL-инъекция. Атакующий может читать или удалять любую информацию о клиенте из базы данных и иным образом мешать работе приложения.Это приемлемо, если это в значительной степени приложение для игрушек, и ваши клиенты будут умирать от своих данных или если доступ к приложению закрыт, доступный только избранным доверенным сторонам/клиентам.
Компромисс уровня данных. Обычно встраивание HTML в XSS. Атакующий может помещать iframe на ваш сайт, указывая на эксплойт безопасности браузера, устанавливающий вредоносное ПО на компьютеры людей, просматривающих страницу с устаревшим программным обеспечением. Это приемлемо, если вы не указали на безопасность своих клиентов или, опять же, если приложение закрыто для общего доступа.
Компромисс на уровне пользователя. Типично непроверенные формы действий, приводящие к атак на межсайтовый запрос-подделку. Допустимо, если ваше приложение вряд ли будет представлять интерес для злоумышленников, чтобы попытаться это сделать.
В целом индустрия в настоящий момент находится где-то около уровня 3. Приложения, предлагающие атаки уровня 1, встречаются редко; дыры уровня 2 более распространены, но являются проблемами, которые большинство авторов знают и знают, что они должны исправить. Уровни 3 отверстия очень распространены, и тактика для избежания всех возможных инъекций HTML не получила широкого применения. Сегодня дыры уровня 4 влияют, вероятно, на большинство веб-приложений.
А вот есть классический мультфильм: http://xkcd.org/327/, который превращает приложение только для выбора в один из них. – 2008-10-20 00:50:11