浅谈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 相关文章推荐
JavaScript 保存数组到Cookie的代码
Apr 14 Javascript
15 个 JavaScript Web UI 库
May 19 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
Nov 30 Javascript
Javascript es7中比较实用的两个方法示例
Jul 21 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
Jan 16 Javascript
微信小程序之判断页面滚动方向的示例代码
Aug 30 Javascript
npm scripts 使用指南详解
Oct 08 Javascript
代码实例ajax实现点击加载更多数据图片
Oct 12 Javascript
Next.js项目实战踩坑指南(笔记)
Nov 29 Javascript
JavaScript动态检测密码强度原理及实现方法详解
Jun 11 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
Jul 17 Javascript
vue实现省市区联动 element-china-area-data插件
Apr 22 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
PHP中file_exists与is_file,is_dir的区别介绍
2012/09/12 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
php使用标签替换的方式生成静态页面
2015/05/21 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
php数据访问之查询关键字
2016/05/09 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
2014/04/15 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
Jquery $when done then的用法详解
2016/05/20 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
2016/10/26 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
学习使用ExpressJS 4.0中的新Router的用法
2018/11/06 Javascript
浅谈Angular单元测试总结
2019/03/22 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
Python语言描述KNN算法与Kd树
2017/12/13 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
Solaris操作系统的线程机制
2015/07/28 面试题
敏捷开发的主要原则都有哪些
2015/04/26 面试题
妇科医生自荐信
2013/11/05 职场文书
大学四年的个人自我评价
2014/01/14 职场文书
优秀求职信范文分享
2014/01/26 职场文书
项目经理任命书范本
2014/06/05 职场文书
火锅店的活动方案
2014/08/15 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
电影地道战观后感
2015/06/04 职场文书
教师继续教育反思周记
2015/06/25 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python
Go语言基础函数基本用法及示例详解
2021/11/17 Golang