浅谈html转义及防止javascript注入攻击的方法


Posted in Javascript onDecember 04, 2016

有的时候页面中会有一个输入框,用户输入内容后会显示在页面中,类似于网页聊天应用。如果用户输入了一段js脚本,比例:<script>alert('test');</script>,页面会弹出一个对话框,或者输入的脚本中有改变页面js变量的代码则会时程序异常或者达到跳过某种验证的目的。那如何防止这种恶意的js脚本攻击呢?通过html转义能解决这个问题。

一:什么是html转义?

html转义是将特殊字符或html标签转换为与之对应的字符。如:< 会转义为 <> 或转义为 >像“<script>alert('test');</script>”这段字符会转义为:“<script>alert('test');</script>”再显示时页面会将<解析为<,>解析为>,从而还原了用户的真实输入,最终显示在页面上 的还是“<script>alert('test');</script>”,即避免了js注入攻击又真实的显示了用户输入。

二:如何转义?

1、通过js实现

//转义 元素的innerHTML内容即为转义后的字符
function htmlEncode ( str ) {
 var ele = document.createElement('span');
 ele.appendChild( document.createTextNode( str ) );
 return ele.innerHTML;
}

//解析 
function htmlDecode ( str ) {
 var ele = document.createElement('span');
 ele.innerHTML = str;
 return ele.textContent;
}

2、通过jquery实现

function htmlEncodeJQ ( str ) {
  return $('<span/>').text( str ).html();
}

function htmlDecodeJQ ( str ) {
  return $('<span/>').html( str ).text();
}

3、使用

var msg=htmlEncodeJQ('<script>alert('test');</script>');

$('body').append(msg);

建议使用jquery实现,因为有更好的兼容性。

以上这篇浅谈html转义及防止javascript注入攻击的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery实现控件的隐藏和显示实例
Feb 08 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
May 23 Javascript
JavaScript中常见获取元素的方法汇总
Mar 04 Javascript
JavaScript中的方法重载实例
Mar 16 Javascript
javascript异步处理工作机制详解
Apr 13 Javascript
javascript淘宝主图放大镜功能
Oct 20 Javascript
js数字计算 误差问题的快速解决方法
Feb 28 Javascript
node.js 利用流实现读写同步,边读边写的方法
Sep 11 Javascript
JS实现为动态创建的元素添加事件操作示例
Mar 17 Javascript
vue 获取视频时长的实例代码
Aug 20 Javascript
VUE兄弟组件传值操作实例分析
Oct 26 Javascript
vue项目proxyTable配置和部署服务器
Apr 14 Vue.js
jquery select2的使用心得(推荐)
Dec 04 #Javascript
Jquery删除css属性的简单方法
Dec 04 #Javascript
浅谈jQuery before和insertBefore的区别
Dec 04 #Javascript
jQuery根据ID、CLASS、等获取对象的实例
Dec 04 #Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
Dec 04 #Javascript
javaScript中定义类或对象的五种方式总结
Dec 04 #Javascript
Javascript中关于Array.filter()的妙用详解
Dec 04 #Javascript
You might like
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
PHP 实现多服务器共享 SESSION 数据
2009/08/15 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
php简单图像创建入门实例
2015/06/10 PHP
thinkphp5.1框架中容器(Container)和门面(Facade)的实现方法分析
2019/08/05 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
详解JavaScript树结构
2017/01/09 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
JS实现520 表白简单代码
2018/05/21 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python RuntimeError: thread.__init__() not called解决方法
2015/04/28 Python
Python 爬虫的工具列表大全
2016/01/31 Python
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
采购主管的岗位职责
2013/12/17 职场文书
酒店办公室文员岗位职责
2013/12/18 职场文书
个人求职信范文分享
2014/01/06 职场文书
社区矫正工作方案
2014/06/04 职场文书
教师节寄语2015
2015/03/23 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
交通事故代理词范文
2015/05/23 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
深入浅析Redis 集群伸缩原理
2021/05/15 Redis
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server