浅谈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 相关文章推荐
url 特殊字符 传递参数解决方法
Jan 01 Javascript
JS在IE和FireFox之间常用函数的区别小结
Mar 12 Javascript
上传的js验证(图片/文件的扩展名)
Apr 25 Javascript
JS 实现导航栏悬停效果(续)
Sep 24 Javascript
js取得html iframe中的元素和变量值
Jun 30 Javascript
js中document.write的那点事
Dec 12 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
Jan 25 Javascript
JavaScript简单实现合并两个Json对象的方法示例
Oct 16 Javascript
Vue下拉框回显并默认选中随机问题
Sep 06 Javascript
vue里如何主动销毁keep-alive缓存的组件
Mar 21 Javascript
详解js中let与var声明变量的区别
Apr 05 Javascript
JavaScript遍历数组的方法代码实例
Jan 14 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
php构造函数的继承方法
2015/02/09 PHP
php中动态变量用法实例
2015/06/10 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
学习YUI.Ext 第二天
2007/03/10 Javascript
js中的string.format函数代码
2020/08/11 Javascript
yepnope.js 异步加载资源文件
2011/09/08 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
JS批量操作CSS属性详细解析
2013/12/16 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
基于vuejs实现一个todolist项目
2017/04/11 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
javaScript字符串工具类StringUtils详解
2017/12/08 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
2020/03/09 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
Python输出各行命令详解
2018/02/01 Python
Python基础之条件控制操作示例【if语句】
2019/03/23 Python
如何在VSCode上轻松舒适的配置Python的方法步骤
2019/10/28 Python
Django中提示消息messages的设置方式
2019/11/15 Python
Python flask框架端口失效解决方案
2020/06/04 Python
CSS图片翻转动画技术详解(IE也实现了)
2014/04/03 HTML / CSS
军训自我鉴定100字
2014/02/13 职场文书
2014年幼儿园植树节活动方案
2014/03/02 职场文书
小学生暑假家长评语
2014/04/17 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
如何在Python中妥善使用进度条详解
2022/04/05 Python