web前后端漏洞分析与防御(一)-XSS

所谓的安全,其实是指两个方面

  • 私密性:不被非法获取和利用(Get)
    • 代码层面
    • 架构层面
    • 运维层面
    • 问题
      • 用户身份被盗用
      • 用户密码泄露
      • 用户资料被盗取
      • 网站数据库泄露
      • 其他
  • 可靠性:不丢失不损坏不被篡改

跨站脚本攻击XSS(Cross Site Scripting)

跨站脚本攻击(Cross Site Scripting),缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

XSS原理

  • 攻击者对含有漏洞的服务器发起XSS攻击(注入JS代码)。
  • 诱使受害者打开受到攻击的服务器URL。
  • 受害者在Web浏览器中打开URL,恶意脚本执行

XSS分类

  • 反射型(url参数直接注入)
    • URL转换(转网址)
  • 存储型(存储到DB后读取时注入)
    • 把恶意脚本存储到攻击目标的数据库中,等待猎物点击

XSS注入点

  • HTML节点内容

 

<div>#{content}</div>
注入点 <div><script>alert(1)</script></div>
  • HTML属性(提前终止属性)

<img src="#{image}" />

注入点<img src="1" οnerrοr="alert(1)"/> 


- Javascript代码(字符串提前关闭)

 

<script type="text/javascript">
        var data = "#{data}";
        var data = "hello";alert(1);"";
    </script>
1
  • 富文本
    • 富文本具有HTML
    • HTML有XSS攻击的风险

XSS实例

 

http://localhost:8045/?from=%3Cscript%20src=%22https://cdn.bootcss.com/jquery/3.2.1/jquery.js%22%3Ealert(1)%3C/script%3E;hanxiao

XSS防御(浏览器,只针对反射性)

 

chrome浏览器自带防御,反射性XSS(HTML内容和属性),就两种
ctx.set('X-XSS-Protection',1);
参数出现在HTML内容或属性

js和富文本的无法拦截

 

HTML内容的防御

  • 用户发表,进入数据库之前转义
  • 显示时进行转义
转义< &lt; > &gt;
<script></script>

 

HTML属性的防御

 

空格,单引号,双引号
一般空格不转义,但是这样我们就需要想到使用单引号或者双引号

 

 

JavaScript的防御

/ "  转义
小心注释符//和引号提前截断

 

富文本防御

 

js可以藏在标签里,超链接url里,何种属性里
<script>alert(1)</script>
<a href="javascript:alert(1)"></a>
<img src="abc" οnerrοr="alert(1)"/>
  • 过滤
    • 黑名单(正则过滤,简单,全面困难)
      • 去掉<script/>….
    • 白名单(麻烦,html解析树状结构,过滤,组转HTML)
      • 只允许部分标签和属性
      • npm install cheerio库(jquery)
      • npm install xss(中国人写的)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值