Предотвращение внедрения SQL в свободные текстовые поля ответа в классическом ASP - PullRequest
5 голосов
/ 11 января 2010

У меня есть несколько текстовых полей со свободным ответом, и я не уверен, как их очистить, чтобы предотвратить внедрение SQL. Есть идеи?

Ответы [ 2 ]

16 голосов
/ 11 января 2010

Создайте параметризованный запрос вместо конкатенации ввода пользователя в запрос.

Вот как это сделать в классическом asp: http://blog.binarybooyah.com/blog/post/Classic-ASP-data-access-using-parameterized-SQL.aspx

Также важно отметить, что единственный способ, которым вы можете быть на 100% безопасным от внедрения SQL, - это параметризация любого оператора SQL, который использует ввод пользователя, даже если он находится в базе данных. Пример: скажем, вы берете пользовательский ввод с помощью параметризованного запроса или хранимой процедуры. Вы будете в безопасности на вставке, однако вам нужно убедиться, что все, что в будущем использует этот вход, также использует параметр. Прямая конкатенация пользовательского ввода - плохая идея везде, в том числе внутри БД.

0 голосов
/ 11 января 2010

Вызовите сохраненную процедуру .

РЕДАКТИРОВАТЬ : Просто чтобы уточнить. Построение динамического sql в sp, конечно, может быть столь же опасным, как и в приложении, но привязка пользовательских вводов в запрос защитит вас от внедрения sql, как описано здесь (обсуждение для конкретного оракула, но принцип применяется в другом месте):

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:23863706595353

Это не динамический SQL, который является проблема (все sql динамически в Oracle на самом деле - даже статический sql в Pro * C / PLSQL!). Это строительство "этого sql, который является проблема. Если пользователь дает вам входные данные - они должны быть связаны в запросе - не соединены Второй ты объединить пользовательский ввод в ваш SQL - это как если бы вы дали им возможность передать вам код, и вы выполнить этот код. Просто и понятно.

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