3

我对这类事情没有经验,所以我想问一下我是否要使用下面的代码,我可以免受 MS SQL 注入攻击/类似的事情吗?

' OPEN DATABASE
dim objConn,objRS,objTRS,objUnit

Set objConn = Server.CreateObject("ADODB.Command") 
objConn.ActiveConnection = "Driver={SQL Server};Server=MSSQLSrv;Database=DbTest;UID=blablabala;PWD=blablabala"

strQuery = "SELECT USERNAME,PASSWORD from CUSTOMERS where EMAIL=?"
objConn.CommandText=strQuery 
objConn.Parameters(0) = Request.QueryString("email")
SET objRS = objConn.execute(strQuery)
4

1 回答 1

1

通过使用参数化,您可以防止 SQL 注入。

但是您不能防止跨站点脚本攻击。

此外,您应该在数据库中散列您的用户密码,并检查与散列的匹配,而不是将其存储为纯文本。

通过允许网站select对客户表执行操作,您的数据也不是特别安全。如果您的网络服务器受到威胁,您的数据也会受到威胁。减少此漏洞的一种方法是在代码中使用存储过程而不是原始 SQL。

(为了您的理智和未来的就业能力,您可能希望从经典的 ASP 转移到 .Net :))

于 2012-08-21T15:26:49.317 回答