浅谈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 相关文章推荐
document.all还是document.getElementsByName?
Jul 21 Javascript
Javascript中eval函数的使用方法与示例
Apr 09 Javascript
javascript 鼠标滚轮事件
Apr 09 Javascript
js 利用className得到对象的实现代码
Nov 15 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
Mar 17 Javascript
jquery.messager.js插件导致页面抖动的解决方法
Jul 14 Javascript
把字符串按照特定的字母顺序进行排序的js代码
Jan 28 Javascript
vue.js利用defineProperty实现数据的双向绑定
Apr 28 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
Sep 11 Javascript
js实现继承的方法及优缺点总结
May 08 Javascript
Angular+ionic实现折叠展开效果的示例代码
Jul 29 Javascript
vue操作dom元素的3种方法示例
Sep 20 Javascript
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
如何分别全角和半角以避免乱码
2006/10/09 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
JavaScript中的style.display属性操作
2013/03/27 Javascript
JavaScript计算字符串中每个字符出现次数的小例子
2013/07/02 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
JS画线(实例代码)
2013/11/20 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
详解能在多种前端框架下使用的表格控件
2017/01/11 Javascript
JavaScript中的编码和解码函数
2017/02/15 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
extjs图形绘制之饼图实现方法分析
2020/03/06 Javascript
详解如何修改 node_modules 里的文件
2020/05/22 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
python列表与元组详解实例
2013/11/01 Python
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
python中正则表达式与模式匹配
2019/05/07 Python
Centos7 下安装最新的python3.8
2019/10/28 Python
Python pip使用超时问题解决方案
2020/08/03 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
实习老师个人总结的自我评价
2013/09/28 职场文书
阿德的梦教学反思
2014/02/06 职场文书
机关单位人员学雷锋心得体会
2014/03/10 职场文书
病危通知书样本
2015/04/17 职场文书
销售会议开幕词
2016/03/04 职场文书