昨天我的应用程序崩溃了,当我检查日志文件夹时,我发现错误日志文件大小约为5 MB。
我怀疑有人袭击了我的网站。
这些是我发现的错误:
A potentially dangerous Request.Form value was detected from the client (hdn_rr="1'"()&%<ScRiPt >prompt(9964...").
Invalid JSON primitive: mNPPaqUT.
Unterminated string passed in. (2): '"
Invalid JSON primitive: select pg_sleep(9);
Invalid JSON primitive: response.write
Invalid JSON primitive: OR 3+185-185-1=0+0+0+1 --
如何阻止和预防这些类型的攻击?
答案 0 :(得分:5)
似乎有人尝试过基于时间的SQL注入攻击,但你说日志文件的大小约为5 MB。这意味着攻击者使用自动漏洞扫描程序,如Netsparker或Acunetix。那些应用程序当时生成了大量的HTTP请求,这导致5 MB的日志大小。如果您查看日志的时间戳,我相信在10秒内将记录几乎50-100个http请求,这是人类无法生成的。
&#34;从客户端检测到一个潜在危险的Request.Form值&#34; 此错误来自IIS。因为IIS可以通过分析每个http请求来检测XSS有效负载。当它将其中一个标记为恶意时,IIS会生成该日志并在请求到达应用程序层之前删除该请求。
为了确保您的应用程序是否安全,您可以粘贴相关控制器和模型的源代码,我将为您分析。但是如果你能说'#34;我使用预备语句或MVC而没有内联查询。&#34;我可以说你的应用程序可以抵御SQL注入攻击。
总之,由于高HTTP流量,您的应用程序似乎崩溃或停止响应。 SQL注入或XSS攻击可能导致数据泄漏或成为客户端的线程。但是这些类型的攻击很少会崩溃应用程序,除了对CGI应用程序的溢出攻击。
答案 1 :(得分:2)
我认为这是一个百万美元的问题......你可能会设计一种可以防范这种攻击的方法,但每天都可能有新的攻击。</ p>
一种方法是节流&#34;来自特定来源的请求。例如,如果IP地址为10.10.8.23的连接数超过&#34;合理数量&#34;请求(并且可选地失败),然后停止接受来自该IP的请求一段时间。
这可以作为模块,global.asx或您认为合适的其他方法来处理,但是有一套网络恶意软件工具可以使这更加容易,并且不需要编码。
答案 2 :(得分:2)
不幸的是,没有银弹。从错误消息来看,您似乎是针对注射和XSS的目标。听起来像IIS为你停止了XSS,希望注入不会影响你或你的用户。可能作为副作用,当您的网站出现故障时,似乎DOS(拒绝服务)也会发生。
以下是我发现的OWASP项目文档的一些链接:
XSS prevention cheat sheet提供了有关使用输出转义/编码的提示。
同样SQL injection cheat sheet提供了参数化查询和转义所有用户输入的建议。
对于DOS:处理此类自动攻击需要进行网络级别测量(例如阻止列入黑名单的流量),您应该与您的提供商合作以防止它们发生。 (或者你可以转移到像CloudFlare这样的提供商 - 没有附属,只是听到了很多名字,知道谁采用了良好的安全措施等等)
另一个一般建议是(如果您已经没有)在您的Web服务器前面设置反向代理。 Nginx和HAproxy是用于此目的的两种流行产品。我不会在您的应用程序中执行任何类型的基于IP或其他网络级别的防护,但这些反向代理设置通常具有针对其中一些场景的模块和配置。