JavaScriptEncode

//使用“\”对特殊字符进行转义,除数字字母之外,小于127使用16进制“\xHH”的方式进行编码,大于用unicode(非常严格模式)。
var JavaScriptEncode = function(str){ var hex=new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'); function changeTo16Hex(charCode){
return "\\x" + charCode.charCodeAt(0).toString(16);
} function encodeCharx(original) { var found = true;
var thecharchar = original.charAt(0);
var thechar = original.charCodeAt(0);
switch(thecharchar) {
case '\n': return "\\n"; break; //newline
case '\r': return "\\r"; break; //Carriage return
case '\'': return "\\'"; break;
case '"': return "\\\""; break;
case '\&': return "\\&"; break;
case '\\': return "\\\\"; break;
case '\t': return "\\t"; break;
case '\b': return "\\b"; break;
case '\f': return "\\f"; break;
case '/': return "\\x2F"; break;
case '<': return "\\x3C"; break;
case '>': return "\\x3E"; break;
default:
found=false;
break;
}
if(!found){
if(thechar > 47 && thechar < 58){ //数字
return original;
} if(thechar > 64 && thechar < 91){ //大写字母
return original;
} if(thechar > 96 && thechar < 123){ //小写字母
return original;
} if(thechar>127) { //大于127用unicode
var c = thechar;
var a4 = c%16;
c = Math.floor(c/16);
var a3 = c%16;
c = Math.floor(c/16);
var a2 = c%16;
c = Math.floor(c/16);
var a1 = c%16;
return "\\u"+hex[a1]+hex[a2]+hex[a3]+hex[a4]+"";
}
else {
return changeTo16Hex(original);
} }
} var preescape = str;
var escaped = "";
var i=0;
for(i=0; i < preescape.length; i++){
escaped = escaped + encodeCharx(preescape.charAt(i));
}
return escaped;
} HtmlEncode
var HtmlEncode = function(str){
var hex = new Array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
var preescape = str;
var escaped = "";
for(var i = 0; i < preescape.length; i++){
var p = preescape.charAt(i);
escaped = escaped + escapeCharx(p);
} return escaped; function escapeCharx(original){
var found=true;
var thechar=original.charCodeAt(0);
switch(thechar) {
case 10: return "<br/>"; break; //newline
case 32: return "&nbsp;"; break; //space
case 34:return "&quot;"; break; //"
case 38:return "&amp;"; break; //&
case 39:return "'"; break; //'
case 47:return "/"; break; // /
case 60:return "&lt;"; break; //<
case 62:return "&gt;"; break; //>
case 198:return "&AElig;"; break;
case 193:return "&Aacute;"; break;
case 194:return "&Acirc;"; break;
case 192:return "&Agrave;"; break;
case 197:return "&Aring;"; break;
case 195:return "&Atilde;"; break;
case 196:return "&Auml;"; break;
case 199:return "&Ccedil;"; break;
case 208:return "&ETH;"; break;
case 201:return "&Eacute;"; break;
case 202:return "&Ecirc;"; break;
case 200:return "&Egrave;"; break;
case 203:return "&Euml;"; break;
case 205:return "&Iacute;"; break;
case 206:return "&Icirc;"; break;
case 204:return "&Igrave;"; break;
case 207:return "&Iuml;"; break;
case 209:return "&Ntilde;"; break;
case 211:return "&Oacute;"; break;
case 212:return "&Ocirc;"; break;
case 210:return "&Ograve;"; break;
case 216:return "&Oslash;"; break;
case 213:return "&Otilde;"; break;
case 214:return "&Ouml;"; break;
case 222:return "&THORN;"; break;
case 218:return "&Uacute;"; break;
case 219:return "&Ucirc;"; break;
case 217:return "&Ugrave;"; break;
case 220:return "&Uuml;"; break;
case 221:return "&Yacute;"; break;
case 225:return "&aacute;"; break;
case 226:return "&acirc;"; break;
case 230:return "&aelig;"; break;
case 224:return "&agrave;"; break;
case 229:return "&aring;"; break;
case 227:return "&atilde;"; break;
case 228:return "&auml;"; break;
case 231:return "&ccedil;"; break;
case 233:return "&eacute;"; break;
case 234:return "&ecirc;"; break;
case 232:return "&egrave;"; break;
case 240:return "&eth;"; break;
case 235:return "&euml;"; break;
case 237:return "&iacute;"; break;
case 238:return "&icirc;"; break;
case 236:return "&igrave;"; break;
case 239:return "&iuml;"; break;
case 241:return "&ntilde;"; break;
case 243:return "&oacute;"; break;
case 244:return "&ocirc;"; break;
case 242:return "&ograve;"; break;
case 248:return "&oslash;"; break;
case 245:return "&otilde;"; break;
case 246:return "&ouml;"; break;
case 223:return "&szlig;"; break;
case 254:return "&thorn;"; break;
case 250:return "&uacute;"; break;
case 251:return "&ucirc;"; break;
case 249:return "&ugrave;"; break;
case 252:return "&uuml;"; break;
case 253:return "&yacute;"; break;
case 255:return "&yuml;"; break;
case 162:return "&cent;"; break;
case '\r': break;
default:
found=false;
break;
}
if(!found){
if(thechar>127) {
var c=thechar;
var a4=c%16;
c=Math.floor(c/16);
var a3=c%16;
c=Math.floor(c/16);
var a2=c%16;
c=Math.floor(c/16);
var a1=c%16;
return "&#x"+hex[a1]+hex[a2]+hex[a3]+hex[a4]+";";
}
else{
return original;
}
}
}
}

Mitigate XSS attacks的更多相关文章

  1. XSS Attacks - Exploiting XSS Filter

    XSS Attacks - Exploiting XSS Filter mramydnei · 2015/12/21 10:11 from:http://l0.cm/xxn/ 0x00 前言 这又是一 ...

  2. (转) XSS Attacks – Exploiting XSS Filter

    中文翻译: from wooyun'drops 0x00 前言 这又是一篇来自全职赏金猎人Masato kinugawa的神作.一次双杀,用一篇报告拿下了两个CVE,分别是CVE-2015-6144和 ...

  3. XSS的防御

    基于代码修改的防御 和SQL注入防御一样,XSS攻击也是利用了Web页面的编写疏忽,所以还有一种方法就是从Web应用开发的角度来避免: 步骤1.对所有用户提交内容进行可靠的输入验证,包括对URL.查询 ...

  4. Anti XSS 防跨站脚本攻击库

    https://wpl.codeplex.com/ Before understanding Anti-Cross Site Scripting Library (AntiXSS), let us u ...

  5. PHP通用的XSS攻击过滤函数,Discuz系统中 防止XSS漏洞攻击,过滤HTML危险标签属性的PHP函数

    XSS攻击在最近很是流行,往往在某段代码里一不小心就会被人放上XSS攻击的代码,看到国外有人写上了函数,咱也偷偷懒,悄悄的贴上来... 原文如下: The goal of this function ...

  6. Cross-site Scripting (XSS) 阅读笔记

    本文源自 https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29 通过阅读和翻译,并按照自己的理解,整理成如下文档. 概述 XSS ...

  7. Web安全XSS

    Web安全XSS 简单的反射型XSS钓鱼演示 </form> <script> function hack(){ XSSImage=new Image; XSSImage.sr ...

  8. webgoat——XSS

    Stage 1: Stored XSS(存储XSS攻击 黑别人) 实验内容:主要是用户"Tom"(攻击者)在自己的个人资料中添加了恶意代码(比如最简单的<script> ...

  9. 过滤xss攻击和sql注入函数

    /**+----------------------------------------------------------* The goal of this function is to be a ...

随机推荐

  1. ssh和ssh-copy-id以及批量多机无密码登陆详解

    本文主要围绕着ssh服务以及如何通过ssh-copy-id实现无密码登陆. 1. sshd 服务以及配置   2.ssh-copy-id命令的使用以及原理.3.批量多机互相信任. 1. sshd 服务 ...

  2. json list数据递归生成树状层级JSON

    <!DOCTYPE html> <html> <head> <script> var data=[ {"id":"aaa& ...

  3. CentOS install搭建SVN服务器

    安装步骤如下: 1.命令:yum install subversion 之后会打印很多消息,显示 Complete! 则完成. 2.查看 svn 版本:svnserve --version 3.创建S ...

  4. Node.js之HTPP URL

    几乎每门编程语言都会包括网络这块,Node.js也不例外.今天主要是熟悉下Node.js中HTTP服务.其实HTTP模块是相当低层次的,它不提供路由.cookie.缓存等,像Web开发中不会直接使用, ...

  5. cef3加载flash闪烁问题非easyhook的另外一种解决方法

    1.现象 cef3加载flash,会出现弹出命令行窗口,显示not sandboxed,影响使用体验. 网上的解决方法,参考此文. http://blog.csdn.NET/zx2356/articl ...

  6. xmpp实现的即时通讯聊天(二)

    参考网址:http://www.jianshu.com/p/8894a5a71b70 借图描述原理: 三.注册.登陆.聊天功能的实现 故事板如下: 四个类如下: 不喜多言,直接上Demo: Login ...

  7. 线程8--GCD常见用法

    1.延迟执行 /***********************延迟第一种方法**************************/ /* 第一种方法, 调用NSObject的方法 [self perf ...

  8. 前端模块化(AMD和CMD、CommonJs)

    知识点1:AMD/CMD/CommonJs是JS模块化开发的标准,目前对应的实现是RequireJs/SeaJs/nodeJs. 知识点2:CommonJs主要针对服务端,AMD/CMD主要针对浏览器 ...

  9. Top K Frequent Elements 前K个高频元素

    Top K Frequent Elements 347. Top K Frequent Elements [LeetCode] Top K Frequent Elements 前K个高频元素

  10. JSP学习笔记(5)-Java Servlet

    1.什么是Servlet? Servlet(Servlet Applet),全程Java Servlet,是用Java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据,生成动态WEB内容.侠义 ...