Есть только несколько способов сделать это.OMG Ponies предлагает лучший ответ: не разрешайте прямые SQL-выражения для вашей базы данных, а используйте инструменты и безопасность, которые может предоставить SQL-сервер.
Альтернативный способ - добавить дополнительный уровень, который будут иметь все запросыпройти.Короче говоря, вы бы передали все запросы (архитектура SOA) новому приложению, которое оценило бы запрос на передачу на сервер sql.Я видел, как одна компания сделала это в ответ на проблемы с инъекциями SQL, которые были у их сайта.
Конечно, это ужасный способ, потому что SQL-инъекция - это только одна потенциальная проблема.
Помимо SQL-инъекций, у вас также есть проблемы с тем, что происходит, когда сам сайт взломан.После того, как вы можете написать новую страницу на веб-сервере, становится довольно просто передать любой запрос на соответствующий сервер базы данных.Это легко обойдет любую вещь на уровне кода, которую вы можете поставить на место.И это позволит злоумышленнику просто написать select * from ...
или truncate table ...
Heck, внутренний человек потенциально может просто напрямую подключиться к серверу sql, используя учетные данные сайтов, и выполнить любой запрос, который ему нужен.
Дело в том,Если вы используете безопасность, встроенную в сервер SQL, для предотвращения прямого доступа к таблице, то вы можете контролировать с помощью хранимых процедур весь спектр действий, доступных любому, кто пытается подключиться к серверу.