• 常见的web漏洞


    一、XSS漏洞

    XSS是跨站脚本攻击(Cross Site Scripting)的缩写,分为存储型,反射型漏洞两种

    1.存储型xss漏洞(风险等级:高)

    漏洞危害

    存储XSS把用户输入的数据存储到数据库,显示到前端页面。攻击者可进行身份验证盗取和蠕虫攻击。存储型XSS也叫做“持久型XSS”

    漏洞验证

     

     

    2.反射型XSS漏洞(风险等级:中)

    漏洞危害

    反射型XSS把用户输入的数据“反射”给浏览器。攻击者往往需要诱使用户“点击”一个恶意链接,才能攻击成功,反射型XSS也叫做“非持久型XSS”

    漏洞验证

     

    修复办法

    1、使用HttpOnly有助于缓解XSS攻击,但是在部署时需要注意,如果业务复杂,则需要在所有Set-Cookie的地方,给关键Cookie都加上HttpOnly。漏掉了一个地方,都可能使得这个方案失效

    2、在服务器端对输入进行格式检查,如在网站注册时填写的用户名只能为字母、数字的组合,手机号应该是不长于16位的数字;检查输入中是否包含一些特殊字符,如<、>、'、"、/等,如果发现,则进行过滤或编码;对输入进行XSS特征的匹配,如查找数据中是否包含“script”、“javascript”、“prompt”、“confirm”等敏感字符

    3、一般来说,除了富文本的输出外,在变量输出到HTML页面时,可以使用编码或转义的方式来防御XSS攻击。针对HTML代码的编码方式是HtmlEncode,在PHP中,有htmlentities()和htmlspecialchars()两个函数可以满足安全要求。相应的,JavaScript的编码方式可以使用JavascriptEncode,JavascriptEncode与HtmlEncode的编码方式不同,它需要使用“”对特殊字符进行转义。在对抗XSS时,还要求输出的变量必须在引号内部,以避免造成安全问题;除了HtmlEncode、JavascriptEncode外,还有很多用于各种情况的编码函数,比如XMLEncode、JSONEncode等

    二、SQL注入漏洞(风险等级:高)

    漏洞危害

    SQL注入被广泛用于非法入侵网站服务器,获取网站控制权。它是应用层上的一种安全漏洞。通常在设计存在缺陷的程序中,对用户输入的数据没有做好过滤,导致恶意用户可以构造一些SQL语句让服务器去执行,从而导致数据库中的数据被窃取、篡改或删除甚至最终导致服务器被入侵等危害

    漏洞验证

      

    正常用户输入“admin”,密码为“password”

    最终执行的SQL语句为:

    select count(*) from admin where username = ' admin ' and password = ' password '

    输入特殊用户" 'or 1=1-- "

    最终执行SQL语句为:

    select count(*) from admin where username = ''or 1=1--' and password = ''

     

     修复办法

    对所有输入/输出的参数在进入数据库调用之前,进行严格过滤和检测,要解决SQL注入漏洞,建议采取以下方式:

    1、传入的参数明确类型,如果参数是数字,应检查参数输入的内容是否是数字,如果检查到其它类型,则应进行错误处理,避免进入数据库调用

    2、对传入的参数中含有特殊字符,应进行转义处理,比如单引号;对数据库关键字如“select”、“update”、“insert”、“and”等进行过滤处理,同时应该具备严格匹配策略,防止攻击者通过大小写、编码等方式绕过限制

    3、对传入的参数的检测,都应该在服务器端进行

    4、进行异常处理,避免出错时暴露敏感信息

    5、合理配置数据库连接用户的权限,应实现权限最小化原则

    6、建议使用参数化查询或预编译的方式进行数据库查询

    三、CSRF跨站请求伪造漏洞(风险等级:高)

     漏洞危害

     攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的

     漏洞验证

    一个典型的CSRF攻击有着如下的流程:


    *受害者登录a.com,并保留了登录凭证(Cookie)

    *攻击者引诱受害者访问了b.com

    *b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie

    *a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求

    *a.com以受害者的名义执行了act=xx

    *攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作

     修复办法

    CSRF漏洞防御主要可以从三个层面进行,即服务端的防御、用户端的防御和安全设备的防御

    1.给每个HTTP请求添加一个不可预测的令牌,并保证该令牌对每个用户会话来说是唯一性。最好的办法是将独有的令牌包含在隐藏字段中,通过HTTP请求发送,避免在URL中暴露出来

    2.设定短暂的可信用户会话时间

  • 相关阅读:
    HTTP网页错误代码大全带解释
    记录一下手把手教您做电商网站
    C#中的Attribute
    C#中dynamic的正确用法
    【CSP】最大的矩形
    【CSP】字符与int
    C++数组初始化
    C++中输出字符到文本文档
    C++ 中时钟函数的使用
    各种函数的头文件
  • 原文地址:https://www.cnblogs.com/ming1025/p/13085860.html
Copyright © 2020-2023  润新知