没有。

抛开允许一些标签(不是真正的问题的点)的主题,HtmlEncode简单地不涵盖所有XSS攻击。

例如,考虑服务器生成的客户端javascript – 服务器动态输出htmlencoded值直接到客户端javascript,htmlencode将不会停止注入脚本执行。

接下来,考虑以下伪代码:

id=textbox>

现在,如果它不是立即显而易见的,如果somevar(由用户发送,当然)设置为例如

a οnclick=alert(document.cookie)

结果输出为

这将明显工作。显然,这可以(几乎)任何其他脚本…和HtmlEncode不会帮助太多。

有一些额外的矢量要考虑…包括XSS的第三种味道,称为基于DOM的XSS(其中恶意脚本是在客户端动态生成,例如基于#值)。

也不要忘记UTF-7型攻击 – 攻击看起来像

+ADw-script+AD4-alert(document.cookie)+ADw-/script+AD4-

没有什么可以编码那里…

解决方案,当然(除了适当和限制性的白名单输入验证),是执行上下文敏感编码:HtmlEncoding是伟大的如果你是输出上下文是HTML,或者也许你需要JavaScriptEncoding或VBScriptEncoding或AttributeValueEncoding ,或…等

如果你使用MS ASP.NET,你可以使用他们的Anti-XSS库,它提供了所有必要的上下文编码方法。

请注意,所有编码不应限于用户输入,也不应限于来自数据库,文本文件等的存储值。

哦,不要忘记显式地设置字符集,在HTTP头和META标签,否则你仍然有UTF-7漏洞…

一些更多的信息,和一个漂亮的定义列表(不断更新),检查出RSnake的作弊表:http://ha.ckers.org/xss.html

html代码不安全,安全 – HTML编码是否会阻止各种XSS攻击?相关推荐

  1. js html转为实体,字符串js编码转换成实体html编码的方法(防范XSS攻击)

    js代码在html页面中转换成实体html编码的方法一: js代码转换成实体html js代码转换成实体html--红 function test(){ alert('测试红') } test(); ...

  2. Python 代码实现哈夫曼编码

    一.哈夫曼编码是什么? 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,可变字长编码(VLC)的一种.Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率 ...

  3. post攻击 xxs_[BUGCASE]CI框架的post方法对url做了防xss攻击的处理引发的文件编码错误...

    一.问题描述 页面报错,没法下载 二.问题分析 1.初步分析 通过查看相关代码可以了解到文件下载的过程如下: 取到下载链接中的mid参数 对mid先后进行url解码和base64解码 将解码后的字符串 ...

  4. IE是怎么处理meta steam的编码的 那100+个xss

    IE是怎么处理meta steam的编码的  && 那100+个xss [起源] 最近hei***放言在各个大网站都存在100+个xss.这是的确存在的,问题出在IE处理meta st ...

  5. 广播代码_代码广播:专为编码而设计的24/7音乐

    广播代码 阅读本文时,您可以继续阅读Code Radio. (You can go ahead and start listening to Code Radio while you read thi ...

  6. 代码神器:拒绝重复编码,这款IDEA插件了解一下.....

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:HeloWxl www.jianshu.com/p/e419 ...

  7. No Code的世界绝无代码!GitHub CEO:编码的未来根本就没有编码

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 [导读]近年来,无代码开发日渐流行.非专业的人员现在也能够参与到开发中了!越来越多的企 ...

  8. iapp启动图代码_代码神器:拒绝重复编码,这款IDEA插件了解一下.....

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:HeloWxl www.jianshu.com/p/e419 ...

  9. java 输出编码_从代码看java输入输出中的编码和解码

    在java中,采用Unicode编码,英文字符和汉字都占两个字节,下面的代码都是在中文操作系统上执行的,系统采用GBK编码. 1.看一下下面这段代码的编码和解码:当我们在键盘上敲入字符的时候,其采用的 ...

  10. python 代码格式规范脚本_Python编码规范

    Python自动化测试代码编码规范 一.适用范围: 本规则基础为Python标准PEP8,在此基础上加了我司测试部编码规范,适用于测试部所有Python脚本编写是采用的规则. 二.编码: 所有的 Py ...

最新文章

  1. HDU3929(容斥原理)
  2. idea使用svn拉取项目代码_IntelliJ IDEA 14 拉取SVN maven 多模块项目 部署tomcat 详细图解!...
  3. javafx 打印控件_Java的新视差控件(JavaFX)
  4. 【Tensorflow】卷积神经网络实现艺术风格化通过Vgg16实现
  5. mysql-外键-随堂
  6. android root 技术,android root实践
  7. SQLPrompt 注册失效方法
  8. 软考论文-写作大纲-备考思路总结
  9. 如何写一份风投喜欢的商业计划书?【转载】
  10. 视频怎么剪辑才好看?学视频剪辑必读入门指南
  11. JNA实战系列:JNA与C语言中的数据类型映射以及复杂结构体传参示例
  12. kotlin 属性重载
  13. (一)安卓修改屏幕背光默认亮度(framework修改法)
  14. 什么是ADB,ADB有什么作用?
  15. 基于android的pc系统,Phoneix OS 系统一款基于安卓打造的个人电脑系统
  16. 读书笔记 - 多智能体强化学习在城市交通网络信号的综述2018
  17. OmniPlan 3 Pro for Mac 3.14.4项目管理工具
  18. 镇魔曲手游服务器维护,网易《镇魔曲》手游好玩到紧急追开6台服务器?
  19. 3D打印压铸模具正在悄悄改写制造业布局
  20. Oracle项目管理系统之合同索赔反索赔

热门文章

  1. Java并发环境下,先操作数据库还是先操作缓存?
  2. 唯一索引和普通索引的区别
  3. u_boot移植(二)---u_boot启动流程分析
  4. error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'
  5. 【避坑】初次接项目的血与泪,扎坑了老铁(二)
  6. SET FOREIGN_KEY_CHECKS = 0
  7. Android 第二课——命令行基本操作
  8. Redhat as5和fedora,centos一样使用yum管理软件
  9. pandas读取csv文件数据并使用matplotlib画折线图和饼图
  10. vscode生成vue模板快捷键_VSCode 初次写vue项目并一键生成.vue模版