成都高投建设开发有限公司网站,学校网站源码,Wordpress自建主题视频百度云下载,wordpress系统下载文章目录 XSSXSS攻击原理常见的攻击方式预防措施 CSRFCSRF攻击原理常见攻击情景预防措施#xff1a; CSRF和XSS的区别 XSS
全称Cross Site Scripting#xff0c;名为跨站脚本攻击。为啥不是单词第一个字母组合CSS#xff0c;大概率与样式名称css进行区分。
XSS攻击原理
不… 文章目录 XSSXSS攻击原理常见的攻击方式预防措施 CSRFCSRF攻击原理常见攻击情景预防措施 CSRF和XSS的区别 XSS
全称Cross Site Scripting名为跨站脚本攻击。为啥不是单词第一个字母组合CSS大概率与样式名称css进行区分。
XSS攻击原理
不需要你做任何的登录认证它会通过合法的操作比如在url中输入、在评论框中输入向你的页面注入脚本可能是js、html代码块等。
导致的结果可能是
破坏页面的正常结构插入广告等恶意内容盗用Cookie
常见的攻击方式 反射型 发出请求时XSS代码出现在url中作为输入提交到服务器端服务器端解析后响应XSS代码随响应内容一起传回给浏览器最后浏览器解析执行XSS代码。这个过程像一次反射所以叫反射型XSS。 示例 用户A访问安全网站B然后用户C发现B网站存在XSS漏洞此时用户C向A发送了一封邮件里面有包含恶意脚本的URL地址此URL地址还是网站B的地址只是路径上有恶意脚本当用户点击访问时因为网站B中cookie含有用户的敏感信息此时用户C就可以利用脚本在受信任的情况下获取用户A的cookie信息以及进行一些恶意操作。 存储型 存储型XSS和反射型XSS的差别在于提交的代码会存储在服务器端数据库、内存、文件系统等下次请求时目标页面时不用再提交XSS代码。 示例 假设网站B是一个博客网站恶意用户C在存在XSS漏洞的网站B发布了一篇文章文章中存在一些恶意脚本例如img标签、script标签等这篇博客必然会存入数据库中当其他用户访问该文章时恶意脚本就会执行然后进行恶意操作。即将携带脚本的数据存入数据库之后又由后台返回。
预防措施
对输入、输出结果进行必要的转义和过滤尽量使用post使用get方式时对路径长度进行限制使用httponly禁止黑客通过脚本获取用户cookie数据但这样无法完全阻止xss攻击因为发送http请求并不需要主动获取cookie
对输入、输出结果进行必要的转义和过滤讲解 编码 对用户输入的数据进行 HTML Entity 编码。 HTML 实体是一段以连字号()开头、以分号(;)结尾的文本(字符串)。实体常常用于显示保留字符(这些字符会被解析为 HTML 代码)和不可见的字符(如“不换行空格”)。你也可以用实体来代替其他难以用标准键盘键入的字符。 不可分的空格nbsp;(小于符号)lt;(大于符号)gt;(与符号)amp;″(双引号)quot;(单引号)apos;©(版权符号)copy; 以上列出的一些实体比较容易记忆但有一些不容易记住的您可以查看 whatwg 或使用解码工具。 在前端一般为了避免 XSS 攻击会将 编码为 lt; 与 gt;这些就是 HTML 实体编码。 在 HTML 转义时仅仅只需要对六个字符进行编码、、、、’ 和 。我们可以使用 he 库进行编码及转义html会正常显示经实体编码或转义后的特殊字符。 // 实体编码
he.encode(img src/img) // #x3C;img src#x22;#x22;#x3E;#x3C;/img#x3E;// 实体转义
he.escape(img src/img) // lt;img srcquot;quot;gt;lt;/imggt;示例 document.write(scriptalert(1)/script)若不进行任何处理则浏览器会执行alert的js操作实现XSS注入。 进行编码处理之后在浏览器中的显示结果就是 scriptalert(1)/script实现了作为纯文本进行输出且不引起JavaScript的执行。 过滤 移除用户输入的和事件相关的属性。如onerror可以自动触发攻击还有onclick等。总而言是过滤掉一些不安全的内容移除用户输入的Style节点、Script节点、Iframe节点。尤其是Script节点它是支持跨域的一定要移除。 校正 避免直接对HTML Entity进行解码。使用DOM Parse转换校正不配对的DOM标签。备注我们应该去了解一下 DOM Parse 这个概念它的作用是把文本解析成DOM结构。 比较常用的做法是通过第一步的编码转成文本然后第三步转成DOM对象然后经过第二步的过滤。
还有一种简洁的方式 对特定字符做相应的转义如果是富文本就白名单。
CSRF
全称 cross-site request forgery名为跨站请求伪造顾名思义就是黑客伪装成用户身份来执行一些非用户自愿的恶意以及非法操作。注意获取cookie是XSS做的事CSRF的作用是借用cookie并不能获取cookie。
CSRF攻击原理 用户是网站A的注册用户且登录进去于是网站A就给用户下发cookie。
从上图可以看出要完成一次CSRF攻击受害者必须满足两个必要的条件 登录受信任网站A并在本地生成Cookie。如果用户没有登录网站A那么网站B在诱导的时候请求网站A的api接口时会提示你登录 在不登出A的情况下访问危险网站B其实是利用了网站A的漏洞。
我们在讲CSRF时一定要把上面的两点说清楚。
温馨提示一下cookie保证了用户可以处于登录状态但网站B其实拿不到 cookie。
常见攻击情景
用户A经常访问博客网站B用户C发现网站B存在CSRF漏洞想尽了各种办法勾引用户A访问了C写好的危险网站D而此时用户A的cookie信息还没有失效危险网站D中有向网站B求请求的非法操作这样用户在不知情的情况下就被操控了。
这个时候就会有一个疑问浏览器本身有同源策略啊为什么在网站D还可以请求网站B的api要记住浏览器对img、iframe和script的src是没有同源限制的所以黑客完全可以利用动态添加这些标签的方法来实现跨站请求。
预防措施 判断请求的Referer是否正确referer 指的是页面请求来源。意思是只接受本站的请求服务器才做响应如果不是就拦截。 设置cookie的SameSite SameSite有3个值Strict, Lax和None Strict。浏览器会完全禁止第三方cookie。比如a.com的页面中访问 b.com 的资源那么a.com中的cookie不会被发送到 b.com服务器只有从b.com的站点去请求b.com的资源才会带上这些CookieLax。相对宽松一些在跨站点的情况下从第三方站点链接打开和从第三方站点提交 Get方式的表单这两种方式都会携带Cookie。但如果在第三方站点中使用POST方法或者通过 img、Iframe等标签加载的URL这些场景都不会携带Cookie。None。任何情况下都会发送 Cookie数据 Token 验证 token不是为了防止XSS的而是为了防止CSRF的。CSRF攻击的原因是浏览器会自动带上cookie而不会带上token。 服务器发送给客户端一个token。客户端提交的表单中带着这个token也可以把 token 隐藏在 http 的 header头中。如果这个 token 不合法那么服务器拒绝这个请求。 攻击示例 cookie用户点击了链接cookie未失效导致发起请求后后端以为是用户正常操作于是进行扣款操作token用户点击链接由于浏览器不会自动带上token所以即使发了请求后端的token验证不会通过所以不会进行扣款操作
CSRF和XSS的区别
CSRF需要登陆后操作XSS不需要CSRF是请求页面api来实现非法操作XSS是向当前页面植入js脚本来修改页面内容。