2011-02-17 72 views
1

我正在寫一個ASP(經典)Javascript的快速網站。我需要將參數清理到SQL存儲過程嗎?

我正在使用帶有參數的準備語句。沒什麼特別的。

我的問題是我需要清理參數的輸入(如果是這樣,是否有任何本地函數爲這樣的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 

回答

7

使用綁定變量,而不是建立從你傳遞的,所以你的參數SQL語句存儲過程不需要清理參數以避免SQL注入。

在其他情況下,您可能想要爲其他原因進行消毒(例如,如果「name」是顯示的內容,並且您希望避免某人在小型Javascript程序中鍵入字段時發生的攻擊,顯示回來)。通常情況下,在實際呈現該字段的代碼中會考慮到這一點,但確保不在數據庫中存儲流氓Javascript是一個很好的備份。

+0

我添加了一些類似我正在使用的SP。我不是100%的綁定變量。你能詳細說明一下嗎? – ChristianLinnell 2011-02-17 21:52:54