zoukankan      html  css  js  c++  java
  • 网站需要提高安全性

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

    分为几种攻击

    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的参数.

  • 相关阅读:
    初赛第四场B
    初赛第四场A
    初赛第六场C
    CF 365(2) C 思维,图形模拟 D 树状数组,离线处理,思维
    CF 725C 模拟 725D
    CF 378(2) C D 模拟
    CF 729D 模拟,思维
    CF 729C 模拟,二分
    CF 381(2) D. dfs序,二分,数组模拟维护
    CF 395(2) D.矩形上色,模拟
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2236486.html
Copyright © 2011-2022 走看看