• 安全问题(XSS与CSRF)


    一.XSS
    1.XSS的定义

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

    (1)反射型: 发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS随响应内容一起返回给浏览器,最后浏览器解析执行XSS代码,这个过程就像一次发射,所以叫反射型XSS。
    (2)存储型: 存储型XSS和反射型的XSS差别就在于,存储型的XSS提交的代码会存储在服务器端(数据库,内存,文件系统等),下次请求目标页面时不用再提交XSS代码。
    ( 3 )DOM XSS攻击不同于反射型XSS和存储型XSS,DOM XSS代码不需要服务器端的解析响应的直接参与,而是通过浏览器端的DOM解析。这完全是客户端的事情。
    DOM XSS代码的攻击发生的可能在于我们编写JS代码造成的。我们知道eval语句有一个作用是将一段字符串转换为真正的JS语句,因此在JS中使用eval是很危险的事情,容易造成XSS攻击。避免使用eval语句。
    3.XSS危害

    1. 通过document.cookie盗取cookie
      2.使用js或css破坏页面正常的结构与样式
      3.流量劫持(通过访问某段具有window.location.href定位到其他页面)
      4.Dos攻击:利用合理的客户端请求来占用过多的服务器资源,从而使合法用户无法得到服务器响应。
      5.利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
      6.利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。

    4.XSS防御

    从以上的反射型和DOM XSS攻击可以看出,我们不能原样的将用户输入的数据直接存到服务器,需要对数据进行一些处理。以上的代码出现的一些问题如下

    没有过滤危险的DOM节点。如具有执行脚本能力的script, 具有显示广告和色情图片的img, 具有改变样式的link, style, 具有内嵌页面的iframe, frame等元素节点。
    没有过滤危险的属性节点。如事件, style, src, href等
    没有对cookie设置httpOnly。

    如果将以上三点都在渲染过程中过滤,那么出现的XSS攻击的概率也就小很多。

    解决方法如下

    对cookie的保护

    对重要的cookie设置httpOnly, 防止客户端通过document.cookie读取cookie。服务端可以设置此字段。
    

    用户输入数据的处理
    编码:不能对用户输入的内容都保持原样,对用户输入的数据进行字符实体编码。
    解码:原样显示内容的时候必须解码,不然显示不到内容了。
    过滤:把输入的一些不合法的东西都过滤掉,从而保证安全性。如移除用户上传的DOM属性,如onerror,移除用户上传的Style节点,iframe, script节点等。

    二.CSRF
    CSRF 就是利用用户的登录态发起恶意请求
    在这里插入图片描述
    如何防御

    通过 referer、token 或者 验证码 来检测用户提交。
    避免全站通用的cookie,严格设置cookie的域.
    阻止第三方网站请求接口
    对于用户修改删除等操作最好都使用post 操作 。
    尽量不要在页面的链接中暴露用户隐私信息。
    
  • 相关阅读:
    axios使用post提交方式
    ajax请求携带cookie和自定义请求头header(跨域和同域)
    HTML <form> enctype 属性, 表单上传
    浏览器常用设计规范,字体与行高(Ant)
    关于级联选择器el-cascader的一些属性
    elemen-ui中的table表格支持行列动态改变
    websocket双向通信
    文本超出用省略号表示或是自动换行
    新建js文件中有自己编写的方法和数据,在其他.vue文件中调用
    了解WebSocket
  • 原文地址:https://www.cnblogs.com/princeness/p/11664921.html
Copyright © 2020-2023  润新知