XSS 跨站脚本攻击
一般发生在客户端,攻击者将恶意代码注入到web客户端,而影响其他浏览此web页面的用户。
更多例子:https://blog.csdn.net/weixin_39327883/article/details/89512217
来源:
- html js css flash等任何可以输入的地方都有可能
- 通过post/get请求
- url参数
- cookie header
- flash
- 浏览器解析差异 比如webkit对textarea内部可解析html的过滤问题
- 不完备的黑名单策略
- xss filter缺陷
只要是输入点都有可能是注入源
类型:反射型和存储型
- 反射型 需要诱使用户点击恶意链接或者提交表单才能攻击成功,一般不存储到服务端,当用户操作后攻击者对此进行拦截 将恶意代码注入网站,例如用户A登录了网站,攻击者给A发送了一个恶意链接(同样的网站单后url追加了恶意参数),用户点击后,攻击者就可以在用户已经受信任的情况下来盗取cookie,或者控制网站。
1、输入文本 窃取网站机密
2、url参数 - 存储型 将跨站代码存储于服务器或数据库中,可以进行多次攻击,博客或新闻发布系统中,黑客将包含有恶意代码的数据信息直接写入文章或文章评论中,所有浏览文章或评论的用户,都会在他们客户端浏览器环境中执行插入的恶意代码。
- 基于dom
在url插入一段js代码,改变页面中的dom结构,造成xss攻击,也属于反射型攻击
恶意:盗取用户cookie 钓鱼 渗透内网 dos攻击等
防御:
- 对所有用户提交内容进行可靠的输入验证
- 保护所有敏感功能如session 验证码
- html进行格式化
- 设置httponly防止劫取cookie
- 输入输出检查,前端和服务器都需要
- 设置好白名单,严格控制富文本
- 对输入输出 url参数进行编码
csp 内容安全策略
- 用于设置规则,比如图片 字体 插件等等的有效来源
- img-src 有效的图片来源
- connect-src 应用于 XMLHttpRequest(AJAX),WebSocket 或 EventSource
- font-src 有效的字体来源
- object-src 有效的插件来源(例如,<object>,<embed>,<applet>)
- media-src 有效的 <audio> 和 <video> 来源
未经设置的来源是不被允许的,开启csp会让网站避免了未知的来源请求和xss攻击,在开启和未开启中间可以通过report-uri和report-only来进行测试。
问题 一般过滤了 引号和尖括号就能防止xss攻击了吗
实际上是不行的,可以进行绕过,通过对尖括号进行转译来实现即使没有尖括号,也可以实现代码攻击 所以也需要对 半字符,反斜杠,单双引号,尖括号进行转译
具体: http://www.91ri.org/4395.html
CSRF跨站请求伪造
https://blog.csdn.net/qq_38948398/article/details/89712839
目标: 拦截正常访问的路径,如通过篡改安插iframe js脚本广告 或替换DNS解析地址。通过钓鱼 广告 等拦截流量,获取利益
攻击手段:登录A网站后浏览器会保存cookie一段时间,这段时间攻击者可以在B网站向A网站发起攻击,那么浏览器会自动携带cookie。
避免:
- 严格区分post和get的使用场景
- 可以使用referer参数判断请求来源
- 使用token 遵循随机 刷新 保密
- DNS劫持可以通过监控网页DOM是否被插入或是否有iframe,监控MutationObserver 和window下的DOMNodeInserted事件
网友评论