好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

网站需要提高安全性

网站需要提高安全性

最近公司的网站需要提高安全性。防止用户的恶意攻击。

分为几种攻击

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/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于网站需要提高安全性的详细内容...

  阅读:37次