Нужно ли дезинфицировать параметры хранимой процедуры SQL? - PullRequest
1 голос
/ 18 февраля 2011

Я пишу быстрый веб-сайт на ASP (классический) Javascript.

Я использую подготовленный оператор с параметром.Ничего особенного.

Мой вопрос заключается в том, нужно ли очищать входные данные для параметра (если да, есть ли какие-либо встроенные функции для этого, как в PHP?), Или я использую параметр,чем конкатенация встроенного SQL делает меня безопасным?

//Set up the command to run the GetMigrationDate stored procedure.
var command = new ActiveXObject("ADODB.Command");
command.CommandText = "exec myStoredProc ?";

//Set up parameters
command.Parameters.Append(command.CreateParameter("name", 200, 1, 255));
command.Parameters("name") = name;

//Set up result recordset
var results = new ActiveXObject("ADODB.Recordset");

//Run command
results.open(command);

[Редактировать] Сохраненный процесс выглядит примерно так:

@name varchar(255)

select * from customers where name = @name

1 Ответ

7 голосов
/ 18 февраля 2011

Ваша хранимая процедура использует переменные связывания и не строит оператор SQL из параметров, которые вы передаете, поэтому вам не нужно очищать параметры, чтобы избежать внедрения SQL.

В других случаях вы можете захотеть очистить их по другим причинам (скажем, если «имя» - это то, что отображается, и вы хотите избежать атаки, когда кто-то вводит небольшую программу Javascript в поле, котороезатем отображается обратно).Обычно об этом заботятся в коде, который фактически отображает поле, но обеспечение того, что вы не храните мошеннический Javascript в базе данных, является хорошей резервной копией.

...