我对这些事情没有经验,所以我只想问我是否要使用下面的代码,我是否可以免受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)
答案 0 :(得分:1)
通过使用参数化,可以防止SQL注入。
但您无法防止跨站点脚本攻击。
此外,您应该在数据库中散列您的userpassword,并检查与散列的匹配,而不是以纯文本格式存储。
通过允许网站对客户表执行select
,您的数据也不是特别安全。如果您的网络服务器遭到入侵,您的数据也会受到损害。减少此漏洞的一种方法是在代码中使用存储过程而不是原始SQL。
(为了您的理智和未来的就业能力,您可能希望从经典ASP转向.Net :))