网站需要提高安全性
最近公司的网站需要提高安全性。防止用户的恶意攻击。
分为几种攻击
1.XSS跨站脚本攻击.
2.SQL注入攻击.
以前没觉得web可以这么轻易的被攻击。用Netsparker工具扫描了一下网站发现sql注入和跨网脚本攻击.(这个软件可以通过 http://www.mavitunasecurity.com/communityedition/ 这个网址下载).主要是由几方面原因引起的:
1.前端和后端的输入验证不够规范统一及完整.
2.对于用户输入的数据完全信任是危险的,没有编码和过滤一些恶意字符。
例如访问这样一个网址 : /product/productSearch.aspx? ?coid=3&pmid=D710%20(Epic%204G%20Touch)&kw=%22%2Balert(9)%2B%22&IsPromotion=0
第 三个参数kw因为在URL中显示的是编码后的,参数的实际值是 ”+alert(9)+” .
productSearch.aspx页面, 参数值传过来没有经过hmtl编码。后端C#程序一个类变量searchkw被赋值 ”+alert(9)+” .
页面前端执行了如下一段js代码
<script type="text/javascript">
getNews("searchDisplay.aspx?pcid=<%=currentPcid %>&pmid=<%=pmid %>&coid=<%=coid %>&psid=&counter=<%=currentCount %>& kw=searchkw %>&isPromotion=<%=isPromotion %>", "searchDiv1");
</script>
这样的话 ”+alert(9)+”的 第一个双引号把前面的代码都截断了,第二个双引号把后面的都截断了。中间就只剩下 alert(9), 便会执行alert(9)这句代码。这句代码可以替换成任意有攻击性的javascript代码段,比如获取cookie的值x=document.cookie;然后提交给攻击者.
我的解决办法是通过使用微软的一个工具AntiXssLibrary.dll来编码该参数的值.这个工具可以去这个网站下载 http://wpl.codeplex.com/ ,这是个开源项目.
这里有一个msdn参考的文档: http://msdn.microsoft.com/en-us/library/aa973813.aspx
3.数据库查询没有使用asp.net中安全的参数化操作.
现在为了解决这几个问题,有以下三步需要做.
1.对于数字类型的参数值、用户输入的部分前端和后端都需要验证数据类型的正确性.
2.对于字符串类型的参值或者用户输入的部分后端通过使用AntiXssLibrary.dll来编码字符串.
3.所有SQL语句中拼接字符串的全部使用SqlParameter类封装传入SQL的参数.
作者: Leo_wl
出处: http://www.cnblogs.com/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息