天天看點

Jquery封裝Ajax過濾XSS

<code>$(document).ajaxSend(onSend);</code>

<code>function</code> <code>onSend(e,xhr,o) {</code>

<code>    </code><code>o.data=dataEncode(o.data);</code>

<code>};</code>

<code>function</code> <code>htmlEncode (str){</code>

<code>    </code><code>var</code> <code>s = </code><code>""</code><code>;</code>

<code>    </code><code>if</code> <code>(str.length == 0) </code><code>return</code> <code>""</code><code>;</code>

<code>    </code><code>//s = str.replace(/ /g, "&amp;nbsp;");</code>

<code>    </code><code>//s = str.replace(/&amp;/g, "&amp;amp;");</code>

<code>    </code><code>s = str.replace(/&lt;/g, </code><code>"%26lt%3B"</code><code>);</code>

<code>    </code><code>s=s.replace(/%3C/g,</code><code>"%26lt%3B"</code><code>);</code>

<code>    </code><code>s=s.replace(/%3c/g,</code><code>"%26lt%3B"</code><code>);</code>

<code>    </code><code>s = s.replace(/&gt;/g, </code><code>"%26gt%3B"</code><code>);</code>

<code>    </code><code>s = s.replace(/%3E/g, </code><code>"%26gt%3B"</code><code>);</code>

<code>    </code><code>s = s.replace(/%3e/g, </code><code>"%26gt%3B"</code><code>);</code>

<code>    </code><code>//s = s.replace(/\'/g, "&amp;#39;");</code>

<code>    </code><code>//s = s.replace(/\"/g, "&amp;quot;");</code>

<code>    </code><code>//s = s.replace(/\n/g, "&lt;br&gt;");</code>

<code>    </code><code>return</code> <code>s;</code>

<code>function</code> <code>htmlEncodeOut (str){</code>

<code>    </code><code>var</code> <code>s = "</code><code>";</code>

<code>    </code><code>if (str.length == 0) return "</code><code>";</code>

<code>    </code><code>//s = str.replace(/ /g, "</code><code>&amp;nbsp;</code><code>");</code>

<code>    </code><code>//s = str.replace(/&amp;/g, "</code><code>&amp;amp;</code><code>");</code>

<code>    </code><code>s = str.replace(/&lt;/g, "</code><code>&amp;lt;</code><code>");</code>

<code>    </code><code>s=s.replace(/%3C/g,"</code><code>&amp;lt;</code><code>");</code>

<code>    </code><code>s=s.replace(/%3c/g,"</code><code>&amp;lt;</code><code>");</code>

<code>    </code><code>s = s.replace(/&gt;/g, "</code><code>&amp;gt;</code><code>");</code>

<code>    </code><code>s = s.replace(/%3E/g, "</code><code>&amp;gt;</code><code>");</code>

<code>    </code><code>s = s.replace(/%3e/g, "</code><code>&amp;gt;</code><code>");</code>

<code>    </code><code>s = s.replace(/%26lt%3B/g, "</code><code>&amp;lt;</code><code>");</code>

<code>    </code><code>s = s.replace(/%26lt%3b/g, "</code><code>&amp;lt;</code><code>");</code>

<code>    </code><code>s = s.replace(/%26gt%3B/g, "</code><code>&amp;gt;</code><code>");</code>

<code>    </code><code>s = s.replace(/%26gt%3b/g, "</code><code>&amp;gt;</code><code>");</code>

<code>    </code><code>//s = s.replace(/\'/g, "</code><code>&amp;</code><code>#39;");</code>

<code>function</code> <code>dataEncode(data){</code>

<code>    </code><code>var</code> <code>rel=data;</code>

<code>    </code><code>var</code> <code>source="</code><code>";</code>

<code>    </code><code>if(typeof(rel) == "</code><code>object</code><code>"){</code>

<code>        </code><code>source=htmlEncode(JSON.stringify(rel));</code>

<code>        </code><code>source=JSON.parse(source);</code>

<code>        </code><code>rel=source;</code>

<code>    </code><code>}else if(typeof(rel) == "</code><code>string</code><code>"){</code>

<code>        </code><code>source=htmlEncode(rel);</code>

<code>    </code><code>}</code>

<code>    </code><code>return rel;</code>

<code>function dataEncodeOut(data){</code>

<code>    </code><code>var rel=data;</code>

<code>    </code><code>var source="</code><code>";</code>

<code>        </code><code>source=htmlEncodeOut(JSON.stringify(rel));</code>

<code>        </code><code>source=htmlEncodeOut(rel);</code>

<code>/*</code>

<code>//此處的Ajax請求是一個示例;未使用架構封裝的Ajax請求時,這需要在自己的ajax方法的success函數的首行添加-- data=dataEncodeOut(data);</code>

<code>jQuery.ajax({</code>

<code>    </code><code>type:"</code><code>post</code><code>",</code>

<code>    </code><code>data:data,</code>

<code>    </code><code>url:"</code><code>http:</code><code>//dfh.smartcity.com/portal/app/service/App.getStateCatalogues.json",</code>

<code>    </code><code>async:async,</code>

<code>    </code><code>dataType:"json</code><code>",</code>

<code>    </code><code>success: function aa(data) {</code>

<code>        </code><code>//需要首行添加</code>

<code>        </code><code>data=dataEncodeOut(data);</code>

<code>        </code><code>alert("</code><code>success已經收到:"+data);</code>

<code>});*/</code>

<code></code>

本文轉自 夢朝思夕 51CTO部落格,原文連結:http://blog.51cto.com/qiangmzsx/1385519