浅谈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编写的第一人称射击游戏
Feb 25 Javascript
html5 canvas js(数字时钟)实例代码
Dec 23 Javascript
jquery获取html元素的绝对位置和相对位置的方法
Jun 20 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
Mar 23 Javascript
JavaScript 正则表达式中global模式的特性
Feb 25 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
Mar 18 Javascript
angular-ui-sortable实现可拖拽排序列表
Dec 28 Javascript
vue2的todolist入门小项目的详细解析
May 11 Javascript
浅谈关于axios和session的一些事
Jul 13 Javascript
基于javascript canvas实现五子棋游戏
Jul 08 Javascript
vue 修改 data 数据问题并实时显示操作
Sep 07 Javascript
Vue监视数据的原理详解
Feb 24 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
在Windows系统上安装PHP运行环境文字教程
2010/07/19 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
PHP中定义数组常量(array常量)的方法
2014/11/17 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
Javascript 错误处理的几种方法
2009/06/13 Javascript
jQuery EasyUI API 中文文档 - Menu菜单
2011/10/03 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
python求解水仙花数的方法
2015/05/11 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
Python语言实现将图片转化为html页面
2017/12/06 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
详解Python 解压缩文件
2019/04/09 Python
python实现微信每日一句自动发送给喜欢的人
2019/04/29 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
Python变量作用域LEGB用法解析
2020/02/04 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
世界上最好的帽子:Tilley
2016/11/27 全球购物
卫生院健康教育实施方案
2014/06/07 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
常住证明范本
2015/06/23 职场文书
祝酒词范文
2015/08/12 职场文书
关于企业的执行力标语大全
2020/01/06 职场文书
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript
分析SQL窗口函数之取值窗口函数
2022/04/21 Oracle