2008-09-11 46 views
4

我在這裏有點困惑。據我所知,微軟聲稱參數化是保護數據庫免受SQL注入攻擊的最佳方式。但我發現這裏的信息兩種相互衝突的來源:在VBScript/ASP Classic和ADO中的參數化

This page表示使用ADO命令對象。但是this page表示命令對象對腳本不安全。我似乎回想起在某處讀取的命令對象不應該用於VBScript或JScript中,因爲存在安全漏洞,但我似乎無法找到該文章。

我在這裏錯過了什麼,或者這兩篇文章似乎互相矛盾?

回答

4

我可能在這裏錯了,但我認爲這只是意味着有人可以使用Command對象來做壞事。即如果其他人正在編寫腳本,它不會被信任。

請參閱本文中的safe for scripting。每一個在線討論這個短語的實例,都會引用它,就好像你正在標記一個ActiveX控件一樣:「這個控件沒有I/O,或者只和服務器對話」,但是Command對象沒有這樣做。它可以用來做很多可能不安全的事情。

他們正在討論的「安全」和防止SQL注入的「安全」是兩回事。有關使用ADO Command對象參數化您的數據的文章是現貨。你應該這樣做。

而且,微軟進一步證實了這一點的位置:

http://msdn.microsoft.com/en-us/library/ms676585(v=VS.85).aspx

1

我認爲「可安全執行腳本」是指「從我們剛剛從一些尼日利亞王子檢索網頁運行安全」。命令對象應該可以安全地在服務器上運行。

在工作,雖然,早在一天,我的同事不信任,所以我們有一個內部框架,基本上做同樣的事情。