常见前端安全 – XSS/CSRF/cookie/密码/HTTP传输/点击劫持

XSS

定义:

Cross site
本网站运行了来自其他网站的代码
数据变成了程序

XSS实例:
页面上输出query参数
页面上显示搜索框脚本
引入外部js资源
富文本 – 写日志 – 富文本 – 塞入的 – 加入scrpit
在线商城 – 订单信息input消息的填写 – 订单信息流入后台 – 获取后台的管理员信息和后台地址

XSS危害:

获取页面数据
获取cookie document.cookie
劫持前端逻辑
发送请求

攻击分类:

XSS攻击点:包含用户输入行为
HTML节点内容

1.HTML属性
红框内为输入内容,导致属性标签闭合 添加了新的属性

2.javascript代码 – 强制标签闭合 – 搜索

3.富文本:富文本自带HTML
防御方法
1.浏览器自带 X-XSS-Protection
取值: 0关闭 1默认(开启) 1后面带参数 – 拦截后自动发送到该网址上
限制:只拦截反射类型注入 – 只对HTML属性和节点内容有用
demo(koa)

2.HTML节点内容/属性 – 转义成HTML实体
不被浏览器解析正常显示
< > 内容
“ ‘ 是属性

3.javascript代码
JSON.stringfy – 所有的单引号/双引号都会被转义
4.富文本
黑名单 – 正则替换 – 因为变形有很多,只能阻挡一部分
白名单 – 在白名单的HTML允许写入 – 实现复杂 – 把html解析成树状结构 – 依次分析过滤每个节点的name,attr,过滤掉不在白名单内的属性和tag
使用npm包 – xss自动实现 https://www.npmjs.com/package/xss
5.csp – http的头
content security policy
内容安全策略,用于指定哪些内容可执行
类型
Child-src 页面子内容 iframe
Connect-src ajax
Default-src fallback 所有的内容
Font-src
Frame-src
Img-src
Manifest-src webapp
Media-src audio/video
Object-src 插件
Script-src
Style-src
Worker-src serviceWorker

配置选项 – 那些可信任那些不可信任
<host-source> 主机域名
<scheme-source> 协议
Self 同域 – 引入的资源
Unsafe-inline 直接插入页面的内容
Unsafe-eval
none 不信任任何内容
Nonce-<base64-value> 指定一次性凭证 凭证匹配时可执行
<hash-source>
Stric-dynamic 引入的后续网址是否

demo没有指定的全部不信任,只信任同源的引入文件,对于直接插入的不信任

CSRF

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理