浅谈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 相关文章推荐
JS实现淘宝幻灯片效果的实现方法
Mar 22 Javascript
JavaScript将相对地址转换为绝对地址示例代码
Jul 19 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
Jan 15 Javascript
JQuery中DOM事件合成用法实例分析
Jun 13 Javascript
jQuery动画效果实现图片无缝连续滚动
Jan 12 Javascript
详解Javascript中的原型OOP
Oct 12 Javascript
简单实现JS倒计时效果
Dec 23 Javascript
折叠菜单及选择器的运用
Feb 03 Javascript
JavaScript ES6箭头函数使用指南
Dec 30 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
Apr 04 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
Apr 16 jQuery
Vue程序调试的方法
Jun 17 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
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
php版微信公众平台接口开发之智能回复开发教程
2016/09/22 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
php表单处理操作
2017/11/16 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
jQuery+css+html实现页面遮罩弹出框
2013/03/21 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
js中的面向对象入门
2017/03/06 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
Python的多态性实例分析
2015/07/07 Python
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
Python使用enumerate获取迭代元素下标
2020/02/03 Python
Python 高效编程技巧分享
2020/09/10 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
大学生个人实习的自我评价
2014/02/15 职场文书
物业保安岗位职责
2014/07/02 职场文书
公司委托书格式
2014/08/01 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
劳模事迹材料范文
2014/12/24 职场文书
安全责任书
2015/01/29 职场文书
入党介绍人意见2015
2015/06/01 职场文书
婚育证明格式
2015/06/17 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
《田忌赛马》教学反思
2016/02/19 职场文书