浅谈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 翻牌或百叶窗效果(内容三秒自动切换)
Jun 14 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
Aug 21 Javascript
JS截取字符串常用方法详细整理
Oct 28 Javascript
浅析Js中的单引号与双引号问题
Nov 06 Javascript
jQuery循环滚动新闻列表示例代码
Jun 17 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
Jul 17 Javascript
使用javascript插入样式
Mar 14 Javascript
Vue.js组件tabs实现选项卡切换效果
Dec 01 Javascript
VUE开发一个图片轮播的组件示例代码
Mar 06 Javascript
给vue项目添加ESLint的详细步骤
Sep 29 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
Mar 20 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
May 02 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
一棵php的类树(支持无限分类)
2006/10/09 PHP
Php注入点构造代码
2008/06/14 PHP
php include,include_once,require,require_once
2008/09/05 PHP
PHP json_decode函数详细解析
2014/02/17 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
React Router基础使用
2017/01/17 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
js实现简单数字变动效果
2017/11/06 Javascript
angular第三方包开发整理(小结)
2018/04/19 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
对angular4子路由&amp;辅助路由详解
2018/10/09 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
JavaScript canvas仿代码流瀑布
2020/02/10 Javascript
使用Python神器对付12306变态验证码
2016/01/05 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
Python如何生成xml文件
2020/06/04 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
Footshop法国:购买运动鞋
2020/01/19 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
《登鹳雀楼》教学反思
2014/04/09 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
幼儿园三八妇女节活动总结
2015/02/06 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
5人制售《绝地求生》游戏外挂获利500多万元 被判刑
2022/03/31 其他游戏
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle