【问题标题】:MS SQL Query Is this Safe?MS SQL 查询安全吗?
【发布时间】:2012-08-21 15:24:31
【问题描述】:

我对这类事情没有经验,所以我想问一下如果我要使用下面的代码,我会不会受到 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)

【问题讨论】:

  • 感谢评论,我怎样才能让它在 asp-classic 中隐藏/加密?

标签: sql-server sql-server-2008 asp-classic parameters sql-injection


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 我推断用户/密码是为了演示,但如果不是,即使在数据库中存储哈希也意味着能够重新连接到数据库以检查哈希.因此,仍然需要应用程序本地的有效用户名/密码(可能存储在加密的配置文件中)......
  • 有趣的是,我只是在阅读有关哈希的内容!但我会问另一个问题RE:那个。但你能告诉我在哪里可以找到更多信息吗?如何在 asp-classic 中防止跨站脚本攻击?
  • @podiluska LOL 我正忙着查看连接,没有注意到他在查询中返回的内容。 DOH 在我身上 :)
  • 我会向@user1612407 提出建议:阅读这篇文章并消化它crackstation.net/hashing-security.htm
  • @user16212407 经典 ASP 在连接字符串的本机安全/保护方面并没有太多东西,这是他们坐下来设计 ASP.NET 时的基本缺点之一。如果你不能迁移到 .NET 平台,你可能不得不考虑滚动你自己的(或调整一些现有的)加密工具,因为你真的不希望普通密码挂在身边:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-07
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多