浅谈html转义及防止javascript注入攻击的方法

有的时候页面中会有一个输入框,用户输入内容后会显示在页面中,类似于网页聊天应用。如果用户输入了一段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注入攻击的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • JS及JQuery对Html内容编码,Html转义

    话不多说,请看代码: /** JQuery Html Encoding.Decoding * 原理是利用JQuery自带的html()和text()函数可以转义Html字符 * 虚拟一个Div通过赋值和取值来得到想要的Html编码或者解码 */ <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script type="text/javascript&quo

  • JS转换HTML转义符的方法

    //去掉html标签 function removeHtmlTab(tab) { return tab.replace(/<[^<>]+?>/g,'');//删除所有HTML标签 } //普通字符转换成转意符 function html2Escape(sHtml) { return sHtml.replace(/[<>&"]/g,function(c){return {'<':'<','>':'>','&':'&

  • java清除html转义字符

    复制代码 代码如下: import java.util.HashMap;import java.util.Map; import org.apache.commons.lang3.StringUtils;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/** * 静态文件处理的一些便捷服务 * @author Kettas * 4:27:25 PM */public class

  • Javascript String对象扩展HTML编码和解码的方法

    复制代码 代码如下: String.prototype.HTMLEncode = function() { var temp = document.createElement ("div"); (temp.textContent != null) ? (temp.textContent = this) : (temp.innerText = this); var output = temp.innerHTML; temp = null; return output; } String.

  • python处理html转义字符的方法详解

    本文实例讲述了python处理html转义字符的方法.分享给大家供大家参考,具体如下: 最近在用Python处理网页数据时,经常遇到一些html转义字符(也叫html字符实体),例如<> 等.字符实体一般是为了表示网页中的预留字符,比如>用>表示,防止被浏览器认为是标签,具体参考w3school的HTML 字符实体.虽然很有用,但是它们会极度影响对于网页数据的解析.为了处理这些转义字符,有如下解决方案: 1.使用HTMLParser处理 import HTMLParser html

  • 对字符串进行HTML编码和解码的JavaScript函数

    编码函数: 复制代码 代码如下: function HtmlEncode(str) { var t = document.createElement("div"); t.textContent ? t.textContent = str : t.innerText = str; return t.innerHTML; } 解码函数: 复制代码 代码如下: function HtmlDecode(str) { var t = document.createElement("di

  • 存储于xml中需要的HTML转义代码

    复制代码 代码如下: /** * html代码输入验证转换 * @param str * @return */ public String htmlFilter(String str){ //转意& str = str.replaceAll("&", "&"); //转意< str = str.replaceAll("<", "<"); //转意> str = str.repla

  • 浅谈html转义及防止javascript注入攻击的方法

    有的时候页面中会有一个输入框,用户输入内容后会显示在页面中,类似于网页聊天应用.如果用户输入了一段js脚本,比例:<script>alert('test');</script>,页面会弹出一个对话框,或者输入的脚本中有改变页面js变量的代码则会时程序异常或者达到跳过某种验证的目的.那如何防止这种恶意的js脚本攻击呢?通过html转义能解决这个问题. 一:什么是html转义? html转义是将特殊字符或html标签转换为与之对应的字符.如:< 会转义为 <> 或转义

  • 浅谈开启magic_quote_gpc后的sql注入攻击与防范

    通过启用php.ini配置文件中的相关选项,就可以将大部分想利用SQL注入漏洞的骇客拒绝于门外. 开启magic_quote_gpc=on之后,能实现addslshes()和stripslashes()这两个函数的功能.在PHP4.0及以上的版本中,该选项默认情况下是开启的,所以在PHP4.0及以上的版本中,就算PHP程序中的参数没有进行过滤,PHP系统也会对每一个通过GET.POST.COOKIE方式传递的变量自动转换,换句话说,输入的注入攻击代码将会全部被转换,将给攻击者带来非常大的困难.

  • 浅谈三种数据库的 SQL 注入

    目录 SQL 注入原理 SQL 注入分类 1. 数字型注入 2. 字符型注入 3. 其他类型 常见数据库的注入 SQL Server MySQL Oracle SQL 注入原理 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统. SQL 注入分类 1. 数字型注入 当输入的参数为整型时,则有可能存在数字型注入漏洞. 假设存在一条

  • 浅谈Sublime Text 3运行JavaScript控制台

    Node.js是一个基于Chrome JavaScript运行时建立的平台,小巧方便搭建.运行的端口可以在浏览器上运行,显示效果,但每次用浏览器也挺麻烦,我们这里讲的是在sublime text2中配置,是的js在sublimetext2中运行,再也不用切换到浏览器了. 1.首先安装node.js,直接去官网下载,然后安装,点击下一步就好了,如果需要更改安装路径,选择好安装路径即可.安装完以后,运行  node -v 如果显示出版本号,则说明安装成功. 2.这时候,我们还是不可以运行js文件的,

  • 浅谈Spring IoC容器的依赖注入原理

    本文介绍了浅谈Spring IoC容器的依赖注入原理,分享给大家,具体如下: IoC容器初始化的过程,主要完成的工作是在IoC容器中建立 BeanDefinition 数据映射,并没有看到IoC容器对Bean依赖关系进行注入, 假设当前IoC容器已经载入用户定义的Bean信息,依赖注入主要发生在两个阶段 正常情况下,由用户第一次向IoC容器索要Bean时触发 但我们可以在 BeanDefinition 信息中通过控制 lazy-init 属性来让容器完成对Bean的预实例化,即在初始化的过程中就

  • 浅谈SpringBoot @Autowired的两种注入方式

    Autowired有两种注入方式 by type by name 默认使用的是byType的方式向Bean里面注入相应的Bean.例如: @Autowired private UserService userService; 这段代码会在初始化的时候,在spring容器中寻找一个类型为UserService的bean实体注入,关联到userService的引入上. 但是如果UserService这个接口存在多个实现类的时候,就会在spring注入的时候报错,例如: public class Us

  • 浅谈AjaxPro.dll,asp.net 前台js调用后台方法

    1.什么是Ajax Ajax是异步Javascript和XML(Asynchronous JavaScript and XML)的英文缩写."Ajax"这个名词的发明人是Jesse James Garrett,而大力推广并且使Ajax技术炙手可热的是Google.Ajax的核心理念在于使用XMLHttpRequest对象发送异步请求. 2.为什么使用 Ajax减轻服务器的负担.Ajax的原则是"按需取数据",可以最大程序地减少冗余请求,减轻服务器的负担. 无需刷新页

  • 什么是JavaScript注入攻击?

    Javascript可以作为黑客攻击网站的一种工具,其中注入js(javascript)恶意脚本就是其中一种手段之一,那么下面,大家来学习一下如何预防js的注入攻击呢?以下有一个不错的陈述,跟大家分享: 什么是 JavaScript 注入攻击? 每当接受用户输入的内容并重新显示这些内容时,网站就很容易遭受 JavaScript 注入攻击.让我们研究一个容易遭受 JavaScript 注入攻击的具体应用程序.假设已经创建了一个客户反馈网站.客户可以访问网站并输入对产品的反馈信息.当客户提交反馈时,

  • 浅谈php处理后端&接口访问超时的解决方法

    [HTTP访问] 一般我们访问HTTP方式很多,主要是:curl, socket, file_get_contents() 等方法. 如果碰到对方服务器一直没有响应的时候,我们就悲剧了,很容易把整个服务器搞死,所以在访问http的时候也需要考虑超时的问题. [ CURL 访问HTTP] CURL 是我们常用的一种比较靠谱的访问HTTP协议接口的lib库,性能高,还有一些并发支持的功能等. CURL: curl_setopt($ch, opt) 可以设置一些超时的设置,主要包括: *(重要) CU

  • 浅谈Viewpager和轮播图的冲突解决方法

    实例如下: //解决ViewPager和轮播图滑动冲突 @Override public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: // 让当前viewpager的父控件不去拦截touch事件 getParent().requestDisallowInterceptTouchEvent(true); downX = (int) ev.ge

随机推荐