什么是XSS攻击?如何防范XSS攻击?

        XSS攻击又称CSS,全称Cross Site Script  (跨站脚本攻击),其原理是攻击者向有XSS漏洞的网站中输入恶意的 HTML 代码,当用户浏览该网站时,这段 HTML 代码会自动执行,从而达到攻击的目的。XSS 攻击类似于 SQL 注入攻击,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制,获取用户的一些信息。 XSS是 Web 程序中常见的漏洞,XSS 属于被动式且用于客户端的攻击方式。

xss攻击可以分成两种类型:一种是非持久型XSS攻击 一种是持久型XSS攻击

非持久型xss攻击:顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。

持久型xss攻击:持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。

 

也可以分成三类:

反射型:经过后端,不经过数据库

存储型:经过后端,经过数据库

DOM:不经过后端,DOM- xss是通过url传入参数去控制触发的。

 

解决方法

1.利用 php htmlentities()函数对传入参数的非法的 HTML 代码包括单双引号等进行转义。但是,中文情况下, htmlentities() 却会转化所有的 html 代码,连同里面的它无法识别的中文字符也给转化了。

2.利用 php htmlspecialchars()函数对传入参数的非法的 HTML 代码包括单双引号等进行转义,需要注意的是第二个参数默认是 ENT_COMPAT,函数默认只是转化双引号("),不对单引号(')做转义。更多的时候要加上第二个参数,应该这样用 : htmlspecialchars($string,ENT_QUOTES)对单双引号都进行转义。如果需要不转化任何的引号第二个参数使用ENT_NOQUOTES

3.通过正则表达式过滤传入参数的html标签来防范XSS攻击

 

  • 9
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
XSS(Cross-Site Scripting,跨站脚本攻击)指的是攻击者利用网站漏洞,将恶意脚本代码注入到网页中,使得其他用户在访问该页面时,恶意脚本会被执行,从而导致攻击者窃取用户的敏感信息或者利用用户的身份进行其他攻击。 XSS 攻击主要有两种方式:反射型 XSS 和存储型 XSS。反射型 XSS 攻击是指攻击者将恶意脚本代码作为参数传递给网站,网站在返回结果时,将恶意脚本代码反射到了用户的浏览器中执行;存储型 XSS 攻击是指攻击者将恶意脚本代码存储到网站的数据库中,其他用户在访问该网站时,恶意脚本代码会从数据库中读取并执行。 为了防范 XSS 攻击,可以采取以下措施: 1. 过滤用户输入数据,对特殊字符进行转义或者过滤。 2. 对于需要展示用户输入数据的地方,使用白名单机制,只允许特定的 HTML 标签和属性出现。 3. 在网站中添加 CSP(Content Security Policy)策略,限制页面的资源加载和执行。 4. 对于需要展示富文本的地方,使用安全的富文本编辑器,并且对富文本内容进行过滤和转义。 5. 将 Cookie 设置为 HttpOnly,防止脚本代码获取 Cookie 值。 6. 对于需要使用 JavaScript 的地方,使用框架提供的 API,避免直接使用 eval 函数等危险函数。 7. 定期对网站进行漏洞扫描和渗透测试,及时发现和修复漏洞。 综上所述,防范 XSS 攻击需要综合采取多种措施,包括对用户输入数据的过滤、使用白名单机制、添加 CSP 策略、安全的富文本编辑器、设置 HttpOnly Cookie、避免危险函数的使用等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值