我购买了一个不使用特殊字符的 Web 应用程序。在查看我的日志时,我看到威胁者在尝试通过添加撇号和其他通常从未使用的 char() 字符来查看我的网站是否容易受到 SQL 注入攻击。我相信我的应用程序的安全性(大部分),但想看看重写规则或其他方法是否会使他们的请求陷入黑洞。我的 Web 应用程序给出了它的标准错误。我正在寻找规则或想法来 1.) 尽可能少地向攻击者提供信息,而不会 2.) 给服务器增加大量开销。有很多重写规则示例,但我没有找到处理这个角度的示例。
探测的简单示例:https://sub.domain.com/default.aspx?page=3500'A=0&Id=497066
答案1
像这样?它将清除一些较讨厌的 SQL 字符。
<system.webServer>
<rules>
<rule name="No SQL injection" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{QUERY_STRING}" pattern="['\(\);]" />
</conditions>
<action type="AbortRequest" />
</rule>
</rules>
</system.webServer>
'();
如果查询字符串中出现任何字符,这将中止请求。