xss攻防浅谈 转

导读

XSS (Cross-Site Script) 攻击又叫跨站脚本攻击, 本质是一种注入攻击. 其原理, 简单的说就是利用各种手段把恶意代码添加到网页中, 并让受害者执行这段脚本. XSS能做用户使用浏览器能做的一切事情. 伟大的同源策略也无法保证不受XSS攻击,因为此时攻击者就在同源之内.

xss攻击方式

从攻击的方式可以分为

  • 反射型
  • 存储型
  • 文档型

这种分类方式有些过时, 长久以来, 人们认为XSS分类有以上三种, 但实际情况中经常无法区分, 所以更明确的分类方式可以分为以下两类:

  • client(客户端型)
  • server(服务端型)

当一端xss代码是在服务端被插入的, 那么这就是服务端型xss, 同理, 如果代码在客户端插入, 就是客户端型xss.

防止xss攻击

转义

无论是服务端型还是客户端型xss,攻击达成都需要两个条件

  • 代码被注入
  • 代码被执行

其实只要做好无论任何情况下保证代码不被执行就能完全杜绝xss攻击.

总之, 任何时候都不要把不受信任的数据直接插入到dom中的任何位置, 一定要做转义。

对于某些位置,不受信任的数据做转义就可以保证安全

  • 一般的标签属性值
  • div body 的内部html

对于某些位置,即使做了转义依然不安全

  • script标签中
  • 注释中
  • 表签的属性名名
  • 标签名
  • css标签中

使用JSON.parse 而不是eval, request 的content-type要指定是Content-Type: application/json;

如果链接的URL中部分是动态生成的, 一定要做转义.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏bboysoul

什么是EOF

EOF的意思是End Of File是文件尾的标志。在数值上来说就是-1。 当在文件操作的时候,碰到文件结束,或者数据读取错误是均会返回EOF。 在linu...

10920
来自专栏微信公众号:Java团长

玩转Redis集群(上)

要想搭建一个最简单的Redis集群,那么至少需要6个节点:3个Master和3个Slave。为什么需要3个Master呢?如果你了解过Hadoop/Storm/...

8820
来自专栏郭耀华‘s Blog

linux下安装git提示”无法打开锁文件 /var/lib/dpkg/lock - open (13: 权限不够)“

如图所示,输入命令:apt-get install git后提示权限不够 解决方法,在命令前加 sudo即可 sudo apt-get install git ...

44160
来自专栏遊俠扎彪

inux (CentOS 5.6) 安装 Sun JDK (切换自带OpenJDK)

可根据需要卸载不需要的JDK Version

20480
来自专栏Java工程师日常干货

玩转Redis集群(上)Redis集群搭建

要想搭建一个最简单的Redis集群,那么至少需要6个节点:3个Master和3个Slave。为什么需要3个Master呢?如果你了解过Hadoop/Storm/...

8430
来自专栏屈定‘s Blog

Maven子模块打包后拷贝目标文件到父模块

看着这个标题一定想怎么会有这么奇怪的需求…. 嗯,我也认为这个是很奇怪的需求,但实际上确实存在.

1.2K30
来自专栏Timhbw博客

Centos安装PHP的IMAP模块

2017-04-1612:32:42 发表评论 353℃热度 学习记录一些 Linux 上的东西: ? 1.首先 ssh 连接上你的服务器:然后执行以下代码:...

40240
来自专栏喵了个咪的博客空间

[喵咪Linux(2)]环境变量的坑

#[喵咪Linux(2)]环境变量的坑# ? ##前言## 玩过linux的童鞋对环境变量都不陌生,我们在安装好一些软件,组件之后想要直接使用它都需要加入环境变...

317120
来自专栏Java成神之路

Idea_学习_09_Idea 方法自动生成参数默认名

生成方法后,还空着参数,可以使用 ctrl + alt + 空格 ,列出参数,然后选择参数即可。

13740
来自专栏JetpropelledSnake

Django学习笔记之URL标签的使用

期初用django 开发应用的时候,完全是在urls.py 中硬编码配置地址,在views.py中HttpResponseRedirect()也是硬编码转向地址...

9910

扫码关注云+社区

领取腾讯云代金券