本篇博文主要从概念和应用上介绍XSS,主要内容来源于《白帽子讲web安全》

XSS核心本质

XSS实际上是一种HTML注入,用户输入的数据被当成HTML的一部分来执行。防御方法核心是输入检查和输出编码。

对于Web应用长见的MVC模式,XSS主要攻击View层。

XSS攻击是在用户的浏览器上执行,形成过程则是服务端页面渲染时,注入了恶意的HTML代码导致。

在ASP.NET MVC中razor默认会对所有输出进行html编码。这是ASP.NET MVC针对XSS攻击的一道防火墙

防御方法

一 HttpOnly设置Cookie, 解决Cookie劫持问题,浏览器将禁止页面javascript访问带有HttpOnly属性的cookie

二 使用输出编码

如使用 HTML 编码一个字符串的含意是什么呢?使用 HTML 编码字符串时,危险字符如 < 和 > 被替换为 HTML 实体,如 &lt; 和 &gt;。所以,当使用 HTML 编码字符串 <script>alert(“Boo!”)</script>时,它将转换为 &lt;script&gt;alert(“Boo!”)&lt;/script&gt;。浏览器在解析编码的字符串时不再执行 JavaScript 脚本。而是显示无害的页面

1 HTML中的变量输出使用HtmlEncode编码

2 在JavaScript的Script中输出,应该确保输出的变量在引号中。防御方法是使用JavaScriptEncode编码

3 在JavaScript事件中输出也是使用JavaScriptEncode编码

4 编码URL

5 处理CSS

三 客户端和服务端双重验证数据

总结:尽量控制用户可控制的变量在 Script HTML标签的Stype以及Css中输出

处理富文本

遵循输入检查的思路,过滤富文本标签,严格不包含事件。在自定义样式的同时需要处理CSS。

考虑到文本样式等问题,需要考虑的因素有 换行标签,空格,硬空格,P标签等。

如果这篇博文对你有帮助,点击推荐支持下吧

参考

Javascript注入攻击

最新文章

  1. Linux 下从头再走 GTK+-3.0 (四)
  2. [转]❲阮一峰❳Linux 守护进程的启动方法
  3. get_post
  4. cocos2d-x 内存管理浅析
  5. Oracle 的简单描述
  6. [USACO08JAN]电话线Telephone Lines
  7. Android中的双向链表
  8. Make a travel blog by Blogabond the theme of wordpress
  9. Qt多线程(有详细例子)
  10. CGPoint、CGSize、CGRect、CGRectEdge的详细使用
  11. Django rest framework(6)----序列化(2)
  12. 如何设计一个restful风格的API
  13. ASP.NET页面之间传值的方式之QueryString(个人整理)
  14. 使用css的类名交集复合选择器 《转》
  15. A Simple Math Problem HDU1757
  16. 百度地图sdk---pc端
  17. DragonBones龙骨换装(局部换装+全局换装)
  18. 07 Maven 使用Nexus创建私服
  19. Linux Shell常用技巧(四)
  20. Redis 之深入江湖-复制原理

热门文章

  1. Oracle 11g PL/SQL&#160;Developer登入时候报ORA-12638:&#160;身份证明检索失败的解决办法(安装了6遍,吐血之作)
  2. Word直接发布新浪博客(以Word 2010为例)
  3. MarkDown语法练习笔记
  4. kinect相机做扫描仪扫描人体模型
  5. UVALive - 6436 —(DFS+思维)
  6. Java反射API研究(1)——注解Annotation
  7. 咏南中间件增加WEBSOCKET支持
  8. nginx 托管.net core的service文件
  9. c语言博客作业06-文件
  10. GO学习笔记 - 没有条件的 switch 同 switch true 一样。