浅谈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 解析json的代码
Dec 16 Javascript
javascript椭圆旋转相册实现代码
Jan 16 Javascript
js 判断计算字符串长度/判断空的简单方法
Aug 05 Javascript
jQuery取消ajax请求的方法
Jun 09 Javascript
jQuery实现的兼容性浮动层示例
Aug 02 Javascript
微信小程序 封装http请求实例详解
Jan 16 Javascript
jQuery使用bind函数实现绑定多个事件的方法
Oct 11 jQuery
vue 弹框产生的滚动穿透问题的解决
Sep 21 Javascript
vue spa应用中的路由缓存问题与解决方案
May 31 Javascript
JavaScript学习教程之cookie与webstorage
Jun 23 Javascript
简单谈谈javascript高级特性
Sep 04 Javascript
vue中使用GraphQL的实例代码
Nov 04 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
在项目中寻找代码的坏命名
2012/07/14 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
php实现简单爬虫的开发
2016/03/28 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
javascript读取RSS数据
2007/01/20 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
IE6 hack for js 集锦
2014/09/23 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
jQuery模拟select实现下拉菜单功能
2016/06/20 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
python操作MySQL数据库的方法分享
2012/05/29 Python
从零开始学Python第八周:详解网络编程基础(socket)
2016/12/14 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
PyTorch 对应点相乘、矩阵相乘实例
2019/12/27 Python
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
售后服务科岗位职责范文
2013/11/13 职场文书
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
《母鸡》教学反思
2014/02/25 职场文书
高中军训的心得体会
2014/09/01 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
七一活动主持词
2015/06/29 职场文书
学校食堂管理制度
2015/08/04 职场文书
环保建议书作文300字
2015/09/14 职场文书
《月光曲》教学反思
2016/02/16 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js