Вопрос безопасности базы данных - PullRequest
0 голосов
/ 18 декабря 2010

Что ж, похоже, такое простое решение многих проблем, которые могут возникнуть из-за небезопасных сервисов и приложений. Но я не уверен, возможно ли это, или, возможно, никто еще не думал об этой идее ...

Вместо того, чтобы предоставлять программистам / разработчикам возможность гарантировать, что их приложения используют хранимые процедуры / параметризованные запросы / escape-строки и т. Д., Чтобы помочь предотвратить внедрение SQL / другие атаки - почему люди, которые создают базы данных, просто не создают эту безопасность функции в базы данных, чтобы при выполнении запроса на обновление или вставку базы данных она защищала / очищала строку перед ее вставкой в ​​базу данных?

Ответы [ 3 ]

1 голос
/ 18 декабря 2010

Проблема заключается в том, что база данных не может легко определить, является ли команда, которую она запрашивает, допустимой или нет - она ​​синтаксически действительна, и у пользователя может быть веская причина запросить ее выполнение.1002 * Есть эвристика, которую может применить СУБД.Например, если в одном запросе объединены как операция SELECT, так и операция DELETE, можно предположить, что это скорее неправомерно, чем законно - и СУБД может отклонить эту объединенную операцию.Но трудно иметь дело с запросом, в котором условие WHERE было ослаблено до такой степени, что он показывает больше данных, чем предполагалось.Запрос UNION может сознательно выбирать из нескольких таблиц.Недостаточно показать, что существует слабое условие и сильное условие ИЛИ вместе - это может быть законным.

В общем, проблема состоит в том, что СУБД должна быть в состоянии выполнитьширокий спектр запросов - поэтому практически невозможно быть уверенным, что любой запрос, который ему дан для выполнения, является или не является законным.

1 голос
/ 18 декабря 2010

База данных не обязательно будет знать контекст происходящего. То, что является вредоносным для одного приложения, не является вредоносным для другого. Иногда целью является

  drop table users--

Гораздо лучше позволить базе данных делать то, что она делает лучше всего, упорядочивая данные. И пусть разработчики будут беспокоиться о реализации безопасности.

0 голосов
/ 18 декабря 2010

Правильный способ доступа к базе данных - хранимые процедуры.Если вы использовали SQL Server и C # / VB.NET, вы могли бы использовать LINQ to SQL, который позволяет вам строить запрос на языке, который затем превращается в параметризованный SP.Хорошие вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...