浅谈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中substr,substring,slice.splice的区别说明
Nov 25 Javascript
Javascript中 关于prototype属性实现继承的原理图
Apr 16 Javascript
JS实现简单的Canvas画图实例
Jul 04 Javascript
js添加select下默认的option的value和text的方法
Oct 19 Javascript
JavaScript 面向对象与原型
Apr 10 Javascript
深入分析下javascript中的[]()+!
Jul 07 Javascript
浅析JavaScript回调函数应用
May 22 Javascript
JavaScript之WebSocket技术详解
Nov 18 Javascript
javascript入门之string对象【新手必看】
Nov 22 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
Jul 12 Javascript
深入浅析AngularJs模版与v-bind
Jul 06 Javascript
浅谈Web Storage API的使用
Jun 23 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运行环境配置的详解
2013/06/04 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
php 可变函数使用小结
2018/06/12 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
vue深入解析之render function code详解
2017/07/18 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
JS常用排序方法实例代码解析
2020/03/03 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
js实现列表按字母排序
2020/08/11 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
Python函数嵌套实例
2014/09/23 Python
python2与python3共存问题的解决方法
2018/09/18 Python
详解Python装饰器
2019/03/25 Python
使用python实现名片管理系统
2020/06/18 Python
详解python 支持向量机(SVM)算法
2020/09/18 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
Banana Republic欧盟:美国都市简约风格的代表品牌
2018/05/09 全球购物
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
Exception类的常用方法
2012/06/16 面试题
营销主管自我评价怎么写
2013/09/19 职场文书
初中三年毕业生的自我评价分享
2014/02/14 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
小学班主任自我评价
2015/03/11 职场文书
无工作证明怎么写
2015/06/15 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书