Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Web Ó¦ÓóÌÐò³£¼û©¶´ CSRF µÄÈëÇÖ¼ì²âÓë·À·¶
 
×÷ÕߣºËÕ½ø¾ü£¬ÎÚÏþ·å À´Ô´£º²©¿ÍÔ°   ·¢²¼ÓÚ 2015-02-06
  3109  次浏览      32
 

»¥ÁªÍøµÄ°²È«ÎÊÌâÒ»Ö±´æÔÚ£¬²¢ÇÒÔÚ¿ÉÔ¤¼ûµÄδÀ´ÖÐûÓÐÏûåôµÄ¼£Ï󣬶øÔÚÈí¼þ¿ª·¢ÖÜÆÚÖУ¬¼ÓÈë¶Ô²úÆ·°²È«ÎÊÌâµÄ¼ì²â¹¤×÷£¬½«¼«´óµÄÌáÉý¶ÔÓ¦°²È«ÎÊÌâ½â¾öµÄ³É±¾£¬¶Ôά»¤Ò»¸öºÃµÄ²úÆ·ÐÎÏóÖÁ¹ØÖØ£¬ÔÚ¾ºÕùÓúÁÒµÄÍøÂçÓ¦ÓòúÆ·ÖеÄÉúÃüÁ¦Ò²½«¸ü³¤¡£±¾ÎÄÒª½éÉܵĿçÕ¾ÇëÇóᣨCSRF£©ÔÚÖÚ¶àµÄ¹¥»÷ÊÖ¶ÎÖУ¬¸ü¾ß±¸Òþ±ÎÐÔ£¬Í¬Ê±Óиü¸ßµÄΣº¦ÐÔ¡£±ÊÕß½«¶ÔÆäµÄ»ù±¾ÌØÐÔ£¬¹¥»÷ÊֶΣ¬Î£º¦¼°·À·¶ÊֶΣ¬ÒÔ¼°ÈçºÎʹÓà Rational AppScan ¶Ô CSRF ¹¥»÷×ö¼ì²â¼°·ÖÎö×öÒ»¸öϵͳµÄ²ûÊö¡£

CSRF µÄ»ù±¾¸ÅÄîÌØÐÔ

¿çÕ¾ÇëÇóαÔ죨CSRF£©µÄÊÇ Web Ó¦ÓóÌÐòÒ»ÖÖ³£¼ûµÄ©¶´£¬Æä¹¥»÷ÌØÐÔÊÇΣº¦ÐԴ󵫷dz£Òþ±Î£¬ÓÈÆäÊÇÔÚ´óÁ¿ Web 2.0 ¼¼ÊõµÄÓ¦Óõı³¾°Ï£¬CSRF ¹¥»÷ÍêÈ«¿ÉÒÔÔÚÓû§·¨ºÁÎÞ²ì¾õµÄÇé¿öÏ·¢Æð¹¥»÷¡£¹ú¼ÊÉϲ¢Î´¶Ô CSRF ¹¥»÷×ö³öÒ»¸öÃ÷È·µÄ¶¨Ò壬ͬʱ£¬¹¥»÷µÄ·¢ÆðÊֶη½Ê½·±¶à£¬ÏÂÎÄ»á×öÏêϸ½éÉÜ¡£¿ÉÒÔ½âÊ͵ÄÊÇ·¢ÆðµÄÄ¿±ê¶¼ÊÇͨ¹ýαÔìÒ»¸öÓû§ÇëÇ󣬸ÃÇëÇó²»ÊÇÓû§Ïë·¢³öÈ¥µÄÇëÇ󣬶ø¶Ô·þÎñÆ÷»ò·þÎñÀ´ËµÕâ¸öÇëÇóÊÇÍêÈ«ºÏ·¨µÄÒ»¸öÇëÇ󣬵«ÊÇÈ´Íê³ÉÁËÒ»¸ö¹¥»÷ÕßËùÆÚÍûµÄ²Ù×÷£¬±ÈÈçÌí¼ÓÒ»¸öÓû§µ½¹ÜÀíÕßµÄȺ×éÖУ¬»ò½«Ò»¸öÓû§µÄÏÖ½ðתµ½ÁíÍâµÄÒ»¸öÕÊ»§ÖС£Í¨³£¿ª·¢ÈËÔ±¶Ô CSRF ¹¥»÷µÄÀí½âÊÇÓÐÎóÇøµÄ£¬·ÖΪÒÔϼ¸·½Ã棬µÚÒ»ÊÇÈçºÎ¹¥»÷µÄ£¬µÚ¶þÊÇΣº¦µ½µ×ÔÚÄÇÀµÚÈýÊÇÈçºÎ·À·¶¾Í²ÅÊÇÒ»¸öÍêÕûµÄ½â¾ö·½°¸¡£±¾ÎľÍÊÇÒª¶ÔÕâЩ»ù±¾µÄÎÊÌâ×öÒ»¸öÏêϸµÄ²ûÊö£¬²¢ÇÒ¸ø³ö¼ì²âµÄÓÐЧ·½·¨¡£

CSRF µÄΣº¦ÊµÀý

´ó²¿·ÖÍøÕ¾ÍùÍù¶Ô½Å±¾×¢ÈëÓÐÑϸñµÄ·À·¶£¬µ«ÊÇ¶Ô CSRF µÄ·À·¶×öµÄ¾Í²îºÜ¶à¡£
ʵÀý 1£º¼ÙÉèÄ³ÍøÕ¾¸ß¼¶»áÔ±»áÏíÓÐÄ³Ð©ÌØÊâȨÏÞ¡£¶øµ±Ò»¸öÆÕͨÓû§¸¶¿îÍê±Ï¾Í¿ÉÒÔÈùÜÀíÔ±½«×Ô¼ºÉý¼¶Îª¸ß¼¶»áÔ±¡£¼ÙÉè¹ÜÀíÔ±½«Ò»¸öÆÕͨÓû§Éý¼¶Îª¸ß¼¶»áÔ±µÄÇëÇóÊÇ£º

http://www.mysite.com/promoteUser.jsp?username=aaaaa

ÎÒÃÇÔÙ¼ÙÉèÆÕͨÓû§ÓÐÔÚÍøÕ¾Ä³¸öÂÛ̳·¢±í»°ÌâµÄȨÏÞ£¬ÕâÑùÒ»¸öÆÕͨÓû§¿ÉÒÔ½«Õâ¸ö URL ·¢±íÔÚijЩ»°ÌâÖ®ÖУ¬È»ºóÓÃÎÒÃdzÆÎªÉç»á¹¤³ÌѧµÄ·½·¨ÒýÓÕÍøÕ¾¹ÜÀíÔ±µã»÷Õâ¸öÁ´½Ó¡£µ±¹ÜÀíÔ±µã»÷Õâ¸öÁ´½Óʱ£¬Õâ¸öÇëÇó¾Í»á´Óä¯ÀÀÆ÷·¢Ë͵½ºǫ́·þÎñÆ÷£¬´Ó¶øÍê³ÉÉí·ÝµÄÉý¼¶¡£µ±È»£¬ÔÚʵ¼Ê¹¥»÷¹ý³ÌÖУ¬ÓкܶàÊÖ¶ÎʹµÃÈùÜÀíÔ±²»µã»÷Ò²ÄÜ·¢ËÍÕâÑùµÄÇëÇ󣬱ÈÈ罫Õâ¸ö URL ÉèÖÃΪij¸öͼƬµÄÔ´¡£

ʵÀý 2£ºÒÔÒ»¸ö¶þÊÖÌøÔéÊг¡ÎªÀý×Ó£¬±ÈÈçijÉÌÒµ½»Ò×ÍøÕ¾×¢²áÓû§ Hacker01 ºÍ Customer01¡£Hacker01 ÔÚÉϽ»ÒׯµµÀ°ÚÉÏ 1 Á¾ 9 ³Éеı¦Âí£¬Í¶±ê¼Û¸ñÊÇ 20000$£¬ÁíÍâÔÙ°ÚÉÏÁíÍâÒ»Á¿·Ï¾É³µÐͱê¼Û 1000$£¬È»¶øÍøÕ¾ÊÇÔÊÐí¼ÓÔØÍ¼Æ¬ÏÔʾ³µµÄ×´¿öµÄ¡£ËùÒÔ±¦Âí³µÖ÷¿ÉÒÔÉÏÔØÒ»¸ö×Ô¼ºµÄͼƬ£¬·Ï¾É³µÖ÷Ò²¿ÉÒÔÉÏÔØÒ»¸ö×Ô¼ºµÄͼƬ¡£

±¦ÂíͼƬ url:http://myrepository/BMW.jpg car id 100000001

·Ï¾É³µÍ¼Æ¬ url:http://myrepository/oldCar.jpg car id 100000002

¶ø¸ÃÅÄÂôÍøÕ¾ÊÇͨ¹ýͶ±ê¾ö¶¨³µµÄ×îÖÕ¼Û¸ñ£¬¼ÙÉèÊǾºÂòÕ߲μӾºÂò±¦ÂíµÄʱºòµã»÷¹ºÂò°´Å¥ä¯ÀÀÆ÷ÊÇͨ¹ý·¢Ò»¸ö GET ÇëÇóµ½ http://e-bussiness-car/bid?value=20000$&carid=100000001 À´Ìá½»×Ô¼ºµÄ¾º±ê¼Û¸ñ¡£ÄÇô Hacker01 Ôò¿ÉÒ԰ѷϾɳµÍ¼Æ¬ÐÞ¸ÄΪ http://e-bussiness-car/bid?value=20000$&carid=100000001£¨»òÕ߯äËûµÄ value ²ÎÊýµÄÊýÖµ£©¡£

ÕâʱºòµÄÇé¿öÊÇ£ºCustomer01 ·ÃÎʱ¦ÂíÄÜ¿´¼ûÕýÈ·µÄͼƬ£¬²¢ÇÒûÓÐÈκÎÎÊÌâ¡£¶ø·ÃÎʷϾɳµ·¢ÏÖͼƬÊÇÒ»¸öÎÞ·¨¿´µ½µÄͼƬ£¬µ«µ± Customer01 ä¯ÀÀ¾É³µÍ¼Æ¬µÄʱºò£¬ä¯ÀÀÆ÷ÒѾ­Ïò±¦Âí³µ·¢ËÍÁËÒ»¸ö¾º±êÇëÇó¡£ÕâÑùÔÚÓû§µÄ¿ØÖÆÖ®Íâ·¢³öÁËÒ»¸öºÏ·¨µÄÇëÇ󣬲¢ÇÒ±»·þÎñÆ÷½ÓÊÕ¡£Hack01 ¿ÉÒÔÔÚ Customer01 ²»Öª¾õµÄÇé¿öϽ«×Ô¼ºµÄ±¦Âí³µÂô³ö¡£Í¨¹ý´ËÀý¿ÉÒÔ·¢ÏÖ CSRF ÓÐ×ŷdz£ÑÏÖØµÄΣº¦ÐÔ¡£

CSRF ¹¥»÷µÄ»ù±¾Â·¾¶¼°·½·¨

HTTP ЭÒéÖж¨ÒåÁË£¬GET/POST/PUT/DELETE ËÄÖÖ»ù±¾²Ù×÷·½·¨Èçͼ 1 ±ê¼Ç-1 Ëùʾ GET/POST ÊÇËùÓÐÍøÕ¾»ò·þÎñÆ÷±ØÐëʹÓõIJÙ×÷·½·¨£¬¶ø PUT/DELETE ¹¦ÄÜÇ¿´ó£¬µ«ÊÇÔÚÒÔÍùµÄÓ¦ÓÃÖв¢Ã»Óб»¹ã·ºµÄʹÓã¬Ö±µ½ Web 2.0 µÄ³öÏÖ£¬Ajax µÄÒýÓõ¼Ö PUT/DELETE ÔÚ REST ¿ò¼Üϱ»·¢Ñï¹â´ó£¬´óÁ¿Ê¹Óã¬Ò²Ê¹ CSRF µÄ¹¥»÷ÊÖ¶ÎÖжàÁËÒ»ÖÖ¹¥»÷·½Ê½¡£±¾ÎÄÒÔ³£ÓÃµÄ GET/POST ΪʵÀý£¬ÕâÁ½ÕßÊDZ»ä¯ÀÀÆ÷ÓÃ×÷Óë·þÎñÆð½øÐÐÊý¾Ý½»»¥µÄÖ÷ÒªÊֶΣ¬²¢°üº¬ Ajax ¿ò¼ÜÏµĹ¥»÷½éÉÜ¡£

CSRF ¹¥»÷µÄ·½·¨¶àÖÖ¶àÑù£¬¶ø¶ÔÕâЩ¹¥»÷·½·¨µÄÈÏʶ½«¸üÓÐÖúÓÚÈ¥¼ì²é»òÔÚ²úÆ·Éè¼ÆÖмÓÈë¶Ô CSRF ¹¥»÷µÄ·À·¶Ê¹Õû¸ö²úÆ·µÄ¿ª·¢µÄ´ú¼Û¸üС¡£°´ÕÕ¹¥»÷µÄ·½Ê½À´¿´£¬·ÖΪÏÔʽ¹¥»÷ºÍÒþʽ¹¥»÷¡£ÏÔʾ¹¥»÷¶ÔÓû§À´ËµÊÇ¿ÉÒÔ²ì¾õµÄ£¬ÀýÈçͨ¹ý¸÷ÖÖ·½·¨ÏòÊܺ¦Õß·¢ËÍÁ´½Ó£¬¶øÒþʽ¹¥»÷ÔòºÜÄѲì¾õ£¬ÍùÍùÊÇ·ÃÎÊÁËÒ»¸öÓЩ¶´µÄÒ³Ãæ£¬»òÕßÒ»¸ö¶ñÒâµÄÒ³Ãæ£¬Ê¹ÓÃÆµÂʸü¶àµÄÔòÊÇÒþÐÔ¹¥»÷£¬ÒòΪÆä¸ü¾ß±¸¿É²Ù×÷ÐÔ¡£Ï±߽éÉܵ½µÄ¹¥»÷·½·¨¶¼¿ÉÒÔ²ÉÈ¡Òþʽ¹¥»÷·½·¨¡£Òª×¢ÒâµÄÊÇ£¬Óû§ÍøÕ¾ÊÇ·ñ´æÔڽű¾×¢ÈëµÄ©¶´£¬²¢²»Ó°Ïì CSRF ¹¥»÷£¬Í¨¹ýʹÓÃµÚ 3 ·½´æÔÚ°²È«Òþ»¼µÄÍøÕ¾Ò»Ñù¿ÉÒÔÍê³É CSRF ¹¥»÷¡£

¶Ôͼ 1 µÄ»ù±¾½âÊÍ£¬±ê¼Ç-1 ÊǺϷ¨Óû§¶ÔÓû§ÍøÕ¾µÄ·ÃÎÊ£¬Ö´ÐкϷ¨ÓÐЧµÄ²Ù×÷£»±ê¼Ç-2 ÊÇͨ¹ýÓʼþϵͳ¶ÔÓû§·¢¶¯¹¥»÷£»±ê¼Ç 3 ÊÇÀûÓà Web µÄÍøÕ¾£¬°üÀ¨Óû§µÄ²Ù×÷ÍøÕ¾£¬ÆÕÍ¨ÍøÕ¾£¬ÒÔ¼°ºÚ¿ÍÍøÕ¾£¬±ê¼Ç-4¡¢5¡¢6 Ö¸µÄÊÇÓк¦Óû§£¨±ê¼Ç-3£©ÀûÓÃµÄ 3 ÖÖ·½Ê½À´¹¥»÷Êܺ¦Óû§¡£

ͼ 1. CSRF ¹¥»÷ʾÒâͼ

¶Ô GET ÇëÇóµÄ CSRF ©¶´µÄ¹¥»÷·½Ê½

GET ÇëÇóʹÓÃµÄÆµÂÊ×î¸ß£¬ÒþʽµÄ GET ÇëÇó£¬ÀýÈç <img> <script><frame><iframe>£¬ÔÚÒ³ÃæÖÐÒýÈëÉÏÊöÒ³ÃæÔªËØ£¬²¢ÇÒÉèÖà SRC ÊôÐÔ¾ÍÄÜÔÚÓû§Î´ÖªµÄÇé¿öÏ·¢³öÒ»¸ö GET ÇëÇóµ½ÏëÈ¥¹¥»÷µÄÍøÕ¾¡£

ÒÔ IMG ±êǩΪÀý£¬¹¥»÷Õß¿ÉÒÔͨ¹ýÔÚͼ 1 Öеıê¼Ç-5¡¢±ê¼Ç-6¡¢±ê¼Ç-2¡¢±ê¼Ç-4 µÄ;¾¶·¢Æð¹¥»÷¡£ÕâÖÖ¹¥»÷µÄÌØÕ÷ÊÇÎÞÃ÷ÏÔÌáʾ£¬µ«ÊÇÒѾ­·¢³öÒ»¸ö¾ßÓÐÍêÕûºÏ·¨µÄÓû§ÇëÇó¡£

<img src=http://UserSite/admin/deletepage?id=74NBCDSEFG/>

¶ÔÓÚÒ»¸ö´óÁ¿²ÉÓà GET ÇëÇóµÄÍøÕ¾£¬ÒþʽµÄͨ¹ý http ±êÇ©·¢³öÒ»¸ö GET ÇëÇó½«ÊÇÖÂÃüµÄ¡£

¾ßÌåµÄ¿ÉÖ´ÐÐÇéÐÎÃèÊö½«ÔÚÈçºÎ¼ì²â²¿·Ö¸ø³ö¡£

¶Ô POST ÇëÇóµÄ CSRF ©¶´µÄ¹¥»÷·½Ê½

¶Ô CSRF ÓÐÒ»ÖÖÀí½âÊÇ°Ñ GET ¸ÄΪ POST ÇëÇó¾ÍÈÏΪÊÇ¿ÉÒÔ·ÀÖ¹±»¹¥»÷ʵ¼ÊÉÏÊÇÒ»ÖÖ´íÎóµÄÀí½â£¬Í¨¹ýʹÓà <iframe> Ò»Ñù¿ÉÒÔÍê³ÉÒ»¸öÒþʽµÄ CSRF ¹¥»÷£¬¾ßÌå½Å±¾Ð´·¨ÈçÏ¡£

Çåµ¥ 1. Frame1.html ½Å±¾

<script>
function post(url, fields) {
var p = document.createElement('form');
p.action = url;
p.innerHTML = fields;
p.target = '_self';
p.enctype = 'multipart/form-data';
p.method = 'post';
document.body.appendChild(p);
p.submit();
} function csrf_hack() {
var fields;
var csrf="<addMember
dnName="CN=manager 9/OU=Managers/OU=Users/O=QDSVT/DC=CN/DC=IBM/DC=COM"
accessLevel="Author" isPerson="1" isLocal="0"/>";
fields += "<input type='' name='action' value='"+csrf+"'>";
unescape(fields);
post('http://usersite:80/dm/services/DocumentService?do401=true',fields);
alert("csrf_end");
}
csrf_hack();
alert('end')
</script>

Çåµ¥ 2. IFrame.html

<IFRAME src=./frame1.html width=0 height=0></IFRAME>

Õâ¶Î´úÂëͨ¹ý½Å±¾¹¹ÔìÒ»¸ö±íµ¥Ìá½»£¬Í¨¹ý IFRAME ¼ÓÔØÒ³Ãæ×Ô¶¯Ö´Ðб¾Àý£¬IFRAME ¿í¸ßÊôÐÔÉèÖóÉÁãµÄÄ¿µÄÊÇΪÁË´ïµ½Òþʽ¹¥»÷µÄЧ¹û£¬JAVASCRIPT Ö»¶Ô´°¿ÚµÄ´óСÓв»³ÉÎĵĹ淶£¬¿í¸ß²»ÄÜСÓÚ 50 ÏñËØµã£¬µ«ÊÇ¶Ô iframe ²¢Ã»ÓÐÒªÇó£¬ÕâΪÒþʽµÄ¿çÓò Post ¹¥»÷ÌṩÁËÒ»¸öÁ¿ºÃµÄ;¾¶¡£Ð´³É½Å±¾µÄÐÎʽ²¢²»ÊÇ˵Ã÷Ö»Òª±»¼ì²âµÄÕ¾µãûÓнű¾×¢Èë¾ÍûÓÐÈκÎÎÊÌ⣬POST Òþʽ¹¥»÷·½Ê½Ò»Ñù¿ÉÒÔͨ¹ýµÚ 3 ·½£¬Èçͼ 1£¬4£¬5£¬6 ¹¥»÷·¾¶¶¼Êʺϱ¾ÀýµÄʹÓá£

Web 2.0 ¹¥»÷·½Ê½

Web 2.0 ¼¼ÊõÒòÆäÄÜ´ó·ù¶ÈÌáÉýÓû§µÄÌåÑ飬ÒѾ­±»·Ç³£¹ã·ºµÄʹÓ㬲¢ÇÒ Web 2.0 ¼¼Êõ¶Ô¿çÕ¾ÇëÇóµÄÌá½»ÓÐÑϸñµÄ¼ì²é£¬ËùÒÔÒ»°ã²»Óõ£ÐÄÀ´×ÔµÚÈý·½µÄ xmlhttp ·¢³öµÄ CSRF ¹¥»÷¡£Web 2.0 ¼¼ÊõÈç¹ûÔÚ±¾Õ¾µã´æÔڽű¾×¢Èë©¶´£¬½«»á²úÉúÑÏÖØµÄ CSRF ¹¥»÷ÎÊÌ⣻ÁíÍâÒ»Ìõ¹¥»÷·¾¶ÔòÊÇͨ¹ýÓʼþϵͳ£¬ÏòÊܺ¦Óû§·¢ËÍ´øÓÐ xmlhttp ÇëÇóµÄ½Å±¾Îļþ£¬ÊÇ·ñ²úÉúΣº¦È¡¾öÓÚÓû§ÊÇ·ñÖ´ÐиÃÎļþ£¬Î£º¦ÐÔÃ÷ÏÔµÍÓÚǰÁ½ÖÖ¡£

¶ÔÓÚ·¢Óʼþ£¬»òÕßÍøÕ¾ÉÏ´«µÄÎļþ·¢Æð¹¥»÷µÄ°¸ÀýÊÇÓÉ IE µÄÌØÐÔÔì³É£¬ÓÉÓÚ IE ÔÊÐí´Ó±¾µØÓò (local domain) ¶ÔÈÎÒâÓò·¢ËÍ£¬Ò»¸ö°üº¬ Web 2.0 ´úÂëµÄÀý×Ó¾ÍÄÜʹ IE Íê³É³ÉÒ»´ÎÀëÏß״̬µÄ¹¥»÷£¬IE ÔÊÐíͨ¹ý¶Ô²ßÂÔµÄÐÞ¸ÄÒÔ´ïµ½ÑϸñµÄ°²È«ÅäÖ㬴Ӷø½ûÖ¹¶ÔͬÓòÄÚÈݵķÃÎÊ¡£
ÒÔÏÂÊÇͨ³£Ê¹ÓÃµÄ¶Ô Web 2.0 ÀàÐ͵Ŀçվ©¶´µÄ¹¥»÷´úÂë¡£

Çåµ¥ 3. ͨ³£Ê¹ÓÃµÄ¶Ô Web 2.0 ÀàÐ͵Ŀçվ©¶´µÄ¹¥»÷´úÂë

<script>
alert('start delete');
var payload="<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header>
<serviceVersion>8.0.0
</serviceVersion></soap:Header><soap:Body><deleteDocument
xmlns="http://webservices.clb.content.ibm.com">
<path>/@Pcsrftestplace/@RMain.nsf/@F/@DE44FD4FF0956D07648257570002C42DA
</path>
</deleteDocument></soap:Body></soap:Envelope>";
alert(message);
var client = new XMLHttpRequest();
client.open("POST",
"http://usercite.com /files/form/api/collections/
2d0f6188-8872-4722-8922-3a3c842aa443/entry?format=xml ");
client.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
client.setRequestHeader("x-method-override","DELETE");
client.setRequestHeader("x-requested-with","XMLHttpRequest");
(you can customized the header if you need)
client.send("");
</script>
<html>

µÇ½ CSRF ¹¥»÷·½Ê½

µÇ½ʽµÄ¿çÕ¾ÇëÇóαÔìÊÇÒ»ÖÖ½ÏÐµĹ¥»÷·½Ê½£¬ÈÃÓû§´íÎóµÄÒÔΪÊÇÓÃ×Ô¼ºµÄÕÊ»§ÃÜÂëµÇ½£¬Êµ¼ÊÉÏÊǵǼµ½Ò»¸ö Hacker µÄÕË»§¡£ÕâÖÖ¹¥»÷·½Ê½µÄ×îÏÔÖøµÄÌØÕ÷ÊÇ£¬Hacker ¿ÉÒÔ¼àÌýµ½Óû§µÄʵ¼Ê²Ù×÷£¬Í¨¹ý²éѯÀúÊ·¼Ç¼¿ÉÒÔÖªµÀÓû§×öÁËÄÇЩ²Ù×÷£¬Èç¹ûÊÇÔÚÉÌÒµÍøÕ¾Ôò»áÔÚÀúÊ·¼Ç¼ÖÐÁôÏÂÐÅÓÿ¨ºÅ£¬Èç¹ûÊÇÔÚ¸öÈËÐÅÏ¢Ïà¹ØÏµÍ³Ôò»áÁôÏÂÓû§µÄÒþ˽²Ù×÷¡£

ʹÓà Rational AppScan ¶Ô CSRF µÄ¼ì²â

APPSCAN ÊÇ IBM ÊÕ¹º WatchFire Ö®ºó»ñµÃÒ»¿îÇ¿´óµÄÍøÂ簲ȫµÄ¼ì²â¹¤¾ß£¬Ä¿Ç°ÊôÓÚ Rational ²úÆ·Ïߣ¬¹¦Äܼ¯ÖÐÔÚÍøÂçÓ¦ÓòúÆ·µÄ¼ì²â·À·¶ÉÏ£¬·Ö¾²Ì¬Ó붯̬Á½ÖÖ²»Í¬µÄ¹¦ÄÜ£¬¸²¸Ç´úÂëÓë²úÆ·µÄÁ½¶Ë¼ì²âÐèÇó¡£

APPSCAN ×Ô´Ó 7.7 µÄ°æ±¾ÒÔºó¼ÓÈë¶Ô CSRF µÄ·À·¶£¬»ù±¾Ô­ÀíÊÇͨ¹ý¶Ôͬһ¸öÐèÒª¼ì²âµÄ URL »òÕß SERVICE °´ÕÕ˳Ðò·¢³öÁ½´ÎÇëÇ󣬷¢ËÍÁ½´ÎÇëÇóÖ®¼ä»á×öÒ»´ÎÍ˳öµÇ¼״̬µÄ²Ù×÷£¬Èç¹ûÒ»¸ö¶Ô CSRF ÒѾ­½øÐзÀ·¶µÄÍøÕ¾ÊǻᷢËÍ»ØÁ½¸ö²»Í¬µÄ»ØÓ¦ÄÚÈÝ¡£ÊµÀýµÄ˵Ã÷ÈçÏ¡£

ÇëÇó 1

GET/POST http://myproduct.com/services?action=remove&id=10002
Headers ¡­.. ¡­..
Content: ¡­¡­

·µ»ØÄÚÈÝ 1

Response 200
Headers ¡­. ¡­..
Content:¡­..

ÇëÇó 2

GET/POST http://myproduct.com/services?action=remove&id=10002
Headers ¡­.. ¡­.. Content: ¡­¡­

·µ»ØÄÚÈÝ 2

Response 200
Headers ¡­. ¡­..
Content:¡­..

·µ»ØÄÚÈÝ 1 ºÍ·µ»ØÄÚÈÝ 2 Èç¹ûÊÇÍêȫһÖµÄÔò¿ÉÒÔÈÏΪÊÇÓÐÎÊÌâµÄ£¬·´Ö®Ôò¿ÉÒÔÈÏΪÊÇûÓÐÎÊÌâ¡£¿´ËƼòµ¥µÄÔ­Àí£¬ÔÚʵ¼Ê²Ù×÷ÖÐÓиöºÜ·±ËöµÄÂß¼­ÎÊÌ⣬±ÈÈçÇëÇó 1 ÊÇÒ»¸öɾ³ý¶¯×÷£¬ÄÇôÈçºÎÈ¥¹¹ÔìÒ»¸öÇëÇó 2£¬²¢ÇÒ»ñµÃÒ»¸öÒ»ÖµĽá¹ûÄØ£¿½â¾öµÄ°ì·¨ÊÇ£¬ÒªÏÈ×öÒ»¸ö²Ù×÷ 1£¬È»ºóÔÙ´´½¨Ò»¸öͬÑùµÄ 1£¬ÔÙ×ö²Ù×÷ 2¡£

´ÓÉÏÊöµÄ¼òµ¥Àý×ӾͿÉÒÔ·¢ÏÖÓÐЧ¼à²â CSRF ÊÇÒ»¸ö½ÏΪ·±ËöµÄ¹ý³Ì¡£AppScan µÄ¼ì²âǰÌá¾ÍÊǶÔÄ¿±ê×ÊÔ´µÄ²Ù×÷ÔÚ²»Í¬µÄÒ»¸ö Session Öзµ»ØµÄÄÚÈݿ϶¨ÊÇÓ¦¸Ã²»Ò»ÑùµÄ¡£

ÕâÀïҪעÒâµÄÎÊÌâÊÇÎ󱨣¬Web Ó¦ÓóÌÐò²Ù×÷´ó¶à¶¼ÊǶÔÒ»¸ö¹Ì¶¨µÄ URL µÄÇëÇ󣬰üº¬Ò»Ð©×ÊÔ´Îļþ£¬ÒÔ¼°Ò»Ð©¹¦ÄÜÐÔµÄÇëÇó¡£¶ÔÓÚ×ÊÔ´ÎļþµÄ²Ù×÷£¬ºÜ¶àÇé¿ö϶¼ÊÇÒ»¸ö¾²Ì¬µÄÇëÇó£¬ÔÚδʹÓà PUT/DELETE µÄÓ¦ÓóÌÐò£¬ÊÇÎÞÐè¶Ô GET ÇëÇó½øÐÐ CSRF ²âÊÔ£¬ÔÚÕâÖÖÇé¿öÏÂÊDz»´æÔÚ CSRF ©¶´µÄ¡£¶øÈç¹ûʹÓÃÁË Ajax ¿ò¼ÜµÄÓ¦ÓóÌÐòÈç¹û´æÔÚ DELETE/PUT ²Ù×÷ÔòÐè×¢ÒâºÜ¿ÉÄܳöÏÖÑÏÖØµÄ CSRF ÎÊÌ⡣δʹÓà Ajax µÄ²úÆ·Ôò¼¯ÖÐÔÚ GET/POST ÇëÇó£¬ÐèҪעÒâµÄÊÇ GET/POST ÇëÇó¶Ô CSRF À´ËµÊÇͬÑù¾ßÓпɲÙ×÷ÐԵģ¬¶Ô²úÆ·µÄΣº¦ÐÔÊÇÒ»Öµġ£

¶Ô CSRF ²âÊÔµÄÁ½¸öÖ÷Òª·½ÏòÊÇ·¾¶¸²¸Ç²âÊÔ£¬ºÍ¾«È·²âÊÔ¡£Ö®ËùÒÔÊÇÒª×öÈç´Ë·ÖÀàµÄÔ­ÒòÊÇÒ»¸ö²úÆ·ÓдóÁ¿µÄ URL Èç¹ûÒ»Ò»²âÊÔÐèÒª´óÁ¿µÄʱ¼ä¾«Á¦£¬¸²¸Ç²âÊÔÊÇÓɹ¤¾ßÈ¥Íê³ÉµÄÊÇΪÁ˱£Ö¤¸²¸Çµ½²úÆ·µÄ¸÷¸ö·¾¶£¬ÓÐЩ²úƷʵ¼ÊÉÏÒѾ­¶Ô CSRF ÓкÜÉîµÄÈÏʶ£¬ÔÚÕâÖÖÇé¿öÏ´ó¶àÊý×ÊÔ´ÒѾ­±»ºÜºÃµÄ±£»¤ÆðÀ´£¬Ã»ÓÐ CSRF µÄÎÊÌ⣬ÕâʱºòÒ»¸ö¶Ôȫ·¾¶µÄ²âÊÔ¾ÍÊǺܱØÒªµÄ¡£

¾«È·²âÊÔÊÇÓÉÈËÀ´Íê³ÉµÄͨ¹ý·ÖÎö²úÆ·¹¦ÄܺͿª·¢ÈËÔ±µÄ¹µÍ¨£¬ÔĶÁÉè¼ÆÎĵµÀ´Íê³ÉµÄ¡£ÎªºÎÒª×ö¾«È·²âÊÔµÄÔ­ÒòÊÇ£¬ËùÓÐ Web Ó¦ÓóÌÐò·Ç³£¹Ø×¢µÄÎÊÌâÖ®Ò»¾ÍÊDzúÆ·µÄÐÔÄÜ£¬¶ø¶ÔËùÓÐÇëÇó¶¼×ö CSRF ·À·¶µÄ»°¾Í±ÈÈçÔÚÒ»¸ö¸ßËÙ¹«Â·ÉÏÉèÖÃÒ»¸öÈ˹¤ÊÕ·ÑÕ¾Ò»Ñù»á´ó´óÓ°ÏìÐÔÄÜ£¬Ò»¸öºÃµÄ Web Ó¦ÓÃÔÚ¶Ô CSRF ·À·¶ÊÇÓÐÕë¶ÔÐԵ쬶ÔÒ»¸öûÓÐ CSRF ±£»¤µÄ²úÆ·£¬Ò»¸öÁ¼ºÃµÄ CSRF ±£»¤¿ª¶Ë¿ÉÒÔÊÇÓɾ«È·²âÊԵĽá¹ûΪ·¢ÆðµÄ¡£Í¨¹ý¶Ô¹Ì¶¨¹¦Äܵļì²â£¬ÒÔ¼°¶ÔÉè¼ÆÎĵµµÄÁ˽⣬»ù±¾¾Í¿ÉÒԶ϶¨²úÆ·ÊÇ·ñ×öÁË CSRF ±£»¤¡£

Ò»¸öÕý³£µÄʹÓà Appscan À´¼ì²â CSRF µÄÁ÷³ÌÈçͼ 2 Ëùʾ¡£

ͼ 2. Ò»¸öÕý³£µÄʹÓà Appscan À´¼ì²â CSRF µÄÁ÷³Ì

AppScan ʹÓÃÁ÷³Ì£¬AppScan Ö´Ðйý³ÌµÄÒ»¸ö·Ö½â£¬Èçͼ 3¡£

ͼ 3. AppScan Ö´Ðйý³ÌµÄÒ»¸ö·Ö½â

¾«È·²âÊԵķ½·¨£¬Ä¿µÄÊÇΪÁ˼ì²âÊÇ·ñ´æÔÚ CSRF ±£»¤¡£¶Ô CSRF ±£»¤Óиö·¶Î§Ô¼ÊøµÄÎÊÌ⣬²¢²»ÊÇËùÓеÄÇëÇó¶¼ÐèÒª¶Ô CSRF ¹¥»÷×ö·À·¶¡£¶Ô¾²Ì¬×ÊÔ´³ý·ÇÓÐ DELETE/PUT ²Ù×÷ÔÊÐíµÄÇé¿öÏ£¬²ÅÐèÒª½øÐвâÊÔ£»¶ø¶ÔÓڹؼüµÄÒµÎñÂß¼­£¬±ÈÈçÒøÐÐתÕÊ£¬È·ÈÏÊÕ»õÈËÐÅÏ¢£¬²Î¼Ó¾º±ê£¬É¾³ýÒ»¸öÓû§£¬¸³ÓèÓû§¸ß¼¶È¨ÏÞ£¬µÈµÈ£¬¶ÔÕâÀඨÐÔÎÊÌâµÄÔ¼ÊøÊǸù¾Ý²»Í¬µÄÉÌÒµ²úÆ·¸÷Ò죬Ҫ¾ßÌåÎÊÌâ¾ßÌå·ÖÎö¡£

±¾ÀýÒÔ³£¼ûµÄÒ³ÃæÉ¾³ýΪʵÀý£¬²ûÊöÒ»¸ö¿ÉÒԵIJâÊÔ·½·¨¡£´ó¸Å·ÖΪÒÔϼ¸ÖÖÇé¿ö :

ʹÓà GET À´É¾³ýÒ³ÃæµÄ£¬Ê¹Óà DELETE/PUT À´É¾³ýÒ³ÃæµÄ£¬Ê¹Óà POST À´É¾³ýÒ³ÃæµÄ£¬¶¼ÊÇ·þÎñÆ÷Óë¿Í»§¶ËµÄ½»»¥¹ý³Ì£¬¾ßÌåµÄʵÀý·ÖÎöÆðÀ´ÒªÔ¶±È·ÖÀà¸üΪ¸´ÔÓ£¬Ò»¸ö²Ù×÷¿ÉÄÜ´øÓкܶà¸÷ÑùµÄÇëÇó£¬ÕÒµ½ÓÐÍþвµÄÇëÇó²ÅÊÇ×îÖÕÄ¿µÄ£¬ÓÐʱºòÄÄÅÂÊÇ AppScan ÒѾ­¶¨Î»µ½¾ßÌåÊÇÄǸöÇëÇó£¬Ò²»¹ÐèҪͨ¹ýÊÖ¹¤½«Õâ¸ö°¸ÀýÕÒ³ö¼ÓÒÔÃèÊö³ÉΪÓÐʵ¼Ê²Ù×÷¼ÛÖµµÄ³¡¾°£¬ÕâÀï¾ÍÐèÒªÒýÈëÊÖ¹¤²âÊÔ¹¤¾ß¼ÓÒÔÖ§³Ö¡£

ÊÖ¹¤¹¤¾ßµÄ½éÉÜ£¬×ö¾«È·²âÊÔÐèÒª¶Ô HTTP ÇëÇó×öƵ·±µÄ²Ù×÷£¬Èç¹ûÐèÒª²é¿´ÇëÇóµÄÄÚÈÝ£¬»¹ÓжԾßÌåÇëÇóµÄ²Ù×÷µÄ¹Û²ì£¬ÍƼöʹÓà Fiddler »òÕß WebScarab¡£

¿ªÊ¼ÊÖ¶¯Ñé֤֮ǰ£¬»¹ÐèÒªÇå³þ CSRF ·¢ÉúµÄÌõ¼þ¡£ËùÓеÄÎÊÌâµÄ·¢ÉúÓиöǰÌáÌõ¼þÊÇÓû§³£ÓõÄä¯ÀÀÆ÷ÖÐÓÐÒ»¸öÓëÄ¿±ê·þÎñÆ÷´¦ÓÚ¼¤»î״̬µÄ»á»°¡£Õâ¸öÌõ¼þÐèÒªµÄÔ­ÒòÊÇ£¬CSRF ¹¥»÷µÄģʽÊÇÓû§ A ±»¶ñÒâÓû§ B Ëù¹¥»÷£¬¹¥»÷ÊÇ B ·¢ÆðµÄ±»Óû§ A Ö´ÐÐʵÏֵġ£

¶ø B ÍùÍùÊÇÔÚ A ³£È¥µÄÍøÕ¾×¢Èë´úÂ룬»òÕß·¢ËÍÁ´½Ó»òÕß°üº¬¸½¼þµÄÎļþ¸ø A£¬¶ø°üº¬×ŶñÒâ´úÂë»òÕßÁ´½ÓµÄÒ³ÃæÒª±»Ö´ÐУ¬Ìõ¼þÊÇÓû§ A ÒѾ­´¦ÔںͷþÎñÆ÷µÄ»á»°Ö®ÖУ¬ÕâÒ²ÊÇ CSRF ·¢ÉúµÄǰÌáÌõ¼þ£¬Ò²ÊÇÊÖ¹¤²âÊԵĻù´¡¡£

¶Ô GET CSRF ©¶´µÄ²âÊÔ

GET ÇëÇóµÄÇé¿öÏ£¬ÇëÇóÈç http://mysite/service?action=delete&pageid=100001 ÕâÀàÎÊÌâµÄÑéÖ¤×îΪֱ½Ó£¬²¢ÇÒÎÞÐèд½Å±¾ºÍʹÓà fiddler ¹¤¾ßÈ¥¹Û²ìʵ¼ÊµÄÇëÇóµÄ¸ñʽ¡£¼ì²â·½·¨¾ÍÊÇÔÚά³ÖÒ»¸öÓë·þÎñÆ÷Á¬½ÓµÄǰÌáÏ£¬ÔÚä¯ÀÀÆ÷µØÖ·À¸ÊäÈëÈçÏÂÍøÖ·£¬Èç¹ûʵ¼ÊµÄÒ³Ãæ±»É¾³ýÁ˾ÍÊÇ CSRF ¹¥»÷³É¹¦ÁË¡£¶ÔÓÚÈç´ËÇå³þµÄʵÀý»ù±¾¿´µ½ URL ÒѾ­¿ÉÒÔÖ¤Ã÷ûÓÐÈκΠCSRF ±£»¤¡£

¿É¹ØÁªµÄ¹¥»÷³¡¾°ÈçÏ£¬ÔÚÈκοÉÒÔÏÔʾͼƬµÄµØ·½Ð´ÈëÈçÏ <img src=http://mysite/service?action=delete&pageid=100001 width=0 height=0/>£¬ÁíÍâÖ»ÐèÒªÖ¸ÒýÓÐɾ³ýȨÏÞµÄÓû§·ÃÎÊһϰüº¬Õâ¸öͼƬ±êÇ©µÄÍøÒ³£¬ÍùÍùÊÇͨ¹ý·¢Ò»¸öÓʼþ»òÕß MSN Ò»¸ö¼òµ¥µÄÁ´½Ó¾Í¿ÉÒÔÍê³Éɾ³ýÒ³ÃæµÄ²Ù×÷¡£

¶Ô POST CSRF ©¶´µÄ²âÊÔ

POST ÇëÇóµÄ²Ù×÷²¢²»ÄÜÃâ³ý CSRF µÄ¹¥»÷¡£ÔÚä¯ÀÀÆ÷ÖÐÒª·¢³ö POST ÇëÇ󣬿ÉÒÔʹÓÃÁ½ÖÖ·½·¨£¬Ò»¸öÊÇͨ¹ý½Å±¾µ÷ÓÃÒ³ÃæÎĵµÔªËØ form Ö±½Ó½øÐÐÌá½»²Ù×÷£¬ÌصãÊÇ¿ÉÒÔ½øÐпçÓòµÄ½Å±¾Ìá½»£¬Òþʽ¹¥»÷¡£ÁíÒ»ÖÖÊÇͨ¹ýʹÓà Ajax ¶ÔÏóÖ±½Ó·¢³öÇëÇ󣬵«ÊÇÓÉÓÚ²»ÄÜ¿çÓò·¢³öÇëÇ󣬿ÉÖ´ÐеÄÁ¦¶È²¢²»¸ß£¬µ«ÊÇ»¹ÊÇÓпÉÄÜÐÔ¡£Í¬ÑùÊÇÒ»¸öɾ³ýÒ³ÃæµÄ²Ù×÷£¬ÈçÏÂËùʾ½á¹¹¡£

POST http://mysite/service
Headers¡­.
Action=delete&pageid=100001

Õâ¸ö²»Í¬ÓÚ GET Ö®´¦ÊDz»Äܼòµ¥µÄͨ¹ýÔÚä¯ÀÀÆ÷Ö±½ÓÊäÈëÒ»¸öÁ´½Ó¾ÍÄܲâÊÔ¡£ÐèÒª½èÖúÒ»ÏÂÔ¤ÉèºÃµÄ HTTP ·þÎñÆ÷Èç IBM HTTP Server¡¢Domino£¬»òÕß IIS¡£½« IFrame.html µÄÇåµ¥¿½±´µ½·þÎñÆ÷µÄÒ»¸öĿ¼¡£Í¨¹ýÐÞ¸Ä frame1.html ÖÐµÄ csrf_hack() ÈçÏ¡£

Çåµ¥ 4. ÐÞ¸Ä frame1.html ÖÐµÄ csrf_hack()

function csrf_hack() {
var fields;
fields += "<input type='' name='action' value='"+"delete"+"'>";
fields += "<input type='' name=pageid value='"+"1000001" +"'>";
unescape(fields);
post('http://mysite/service ',fields);
alert("csrf_end");
}

¿É¹ØÁªµÄ¹¥»÷³¡¾°ÈçÏ £¬Í¨¹ýÓʼþ»òÕß MSN ·¢ËÍÒ»¸öÁ´½Ó http://hackerWebServer/iframe ¸ø¿ÉÒÔɾ³ýÒ³ÃæµÄÓû§£¬¸Ã²Ù×÷¾Í»á±»Ö´ÐУ¬Èç¹ûÒ³ÃæÉ¾³ý£¬¹¥»÷³É¹¦¡£Í¨¹ýÔÚÆäËûÍøÕ¾¿ÉÒÔ×ö½Å±¾×¢ÈëµÄ½« iframe.html ½Å±¾Ð´ÔÚ¸ÃÍøÕ¾£¬Ò»Ñù¿ÉÒÔ´ïµ½¹¥»÷Ч¹û¡£

ÁíÒ»Ààͨ¹ý Ajax Ìá½»µÄ post ÇëÇó£¬ÕâÀà½á¹¹Öжà²ÉÓà SOAP message »òÕßÀàËÆµÄ XML ÏûÏ¢Ì壬»òÕß Jason ÏûÏ¢ÌåÌá½»ÇëÇ󡣽ṹÈçÏ¡£

POST http://mysite/service
Headers¡­.
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header>
<serviceVersion>8.0.0</serviceVersion>
</soap:Header><soap:Body>
<deleteDocument
xmlns="http://webservices.clb.content.ibm.com">
<path>/@Pcsrftestplace/@RMain.nsf/@F/@DE44FD4FF0956D07648257570002C42DA
</path></deleteDocument></soap:Body></soap:Envelope>

ÔÚ´ËÀàÇé¿öÏ£¬ÐèÒªÐÞ¸Ä form µÄ±íµ¥µÄ enctype ÊôÐÔΪ multipart/form-data£¬ÒòΪÔÚĬÈϵÄÇé¿öÏÂÊÇ application/x-www-form-urlencoded£¬ËùÓÐ×Ö·û¶¼»á×ö URL ±àÂëת»»£¬Ìá½»µÄÊý¾ÝÊDz»ºÏ·¨µÄÎÞ·¨±»·þÎñÆ÷¶Ëʶ±ð£¬ËùÒÔÐèÒªÐÞ¸Ä enctype ÊôÐÔ£¬ÔÚ multipart/formdata µÄÇé¿öÏ£¬Êý¾ÝÊDz»»á±»±àÂëµÄ£¬¶øÔںܶà·þÎñÆ÷µÄ½ÓÊÕ¶ËÓеľÍÊÇʹÓà multipart/formdata È¥½ÓÊÜÊý¾Ý¡£ÓÉÓÚ javascript ³öÓÚ¶Ô°²È«µÄ¿¼ÂǽûÖ¹½Å±¾×Ô¶¯ÐÞ¸Ä form ÖÐÌá½»µÄ file ÊôÐÔµÄÊäÈëµÄÖµ£¬ËùÒÔÏëͨ¹ý½Å±¾Ð޸ĿØÖÆ enctype ÊDz»ÔÊÐíµÄ£¬ÕâÑù²»Í¬ÓÚµÚÒ»Àà POST ÇëÇó¡£µ«ÊDz¢²»Ó°Ï쳡¾°µÄºÏÀíÐÔ£¬Í¨¹ýÔÚÓЩ¶´µÄÍøÕ¾Î±Ôì±íµ¥ÇëÇó£¬form Ö¸ÏòÎÒÃÇÒª²Ù×÷µÄ URL ¼´¿É¡£ÕâÖÖÇé¿öÏ£¬ÐèÒª¹¹ÔìÒ»¸öÍêÕûµÄ±íµ¥£¬²¢Í¨¹ýÓû§µã»÷Ò»¸öÈÎÒⷽʽ·¢Ë͵ÄÁ´½Ó´ïµ½¹¥»÷Ч¹û¡£

¶Ô DELETE/PUT CSRF ©¶´µÄ²âÊÔ

DELETE/PUT ÇëÇóÒÀÀµÓÚ Web 2.0 ¼¼Êõ£¬ÓÉÓÚ±¾ÉíµÄÏÞÖÆ£¬×ÔÓÉ·¢³ö¿çÕ¾µÄαÔìÇëÇóÊDz»¿ÉÄܵġ£¸ü¶àʹÓõÄÊÇÀëÏß¹¥»÷£¬»òÕß±¾Õ¾µãµÄ½Å±¾×¢Èë¹¥»÷¡£ÔÚ´æÔÚ±¾Õ¾µã½Å±¾×¢Èë¹¥»÷µÄÇé¿öÏ£¬ËùÓÐÕâ 4 ÖÖÇé¿öÏ£¬¶¼¿ÉÒÔÍê³ÉÒþʽµÄ¹¥»÷·½Ê½¡£´úÂëÇë²ÎÕÕ Web 2.0 ¹¥»÷Õ½ڵÄʵÀý¡£

CSRF µÄ·À·¶

CSRF µÄ·À·¶»úÖÆÓкܶàÖÖ£¬·À·¶µÄ·½·¨Ò²¸ù¾Ý CSRF ¹¥»÷·½Ê½µÄ²»¶ÏÉý¼¶¶ø²»¶ÏÑÝ»¯¡£³£ÓõÄÓмì²é Refer Í·²¿ÐÅÏ¢£¬Ê¹ÓÃÒ»´ÎÐÔÁîÅÆ£¬Ê¹ÓÃÑé֤ͼƬµÈÊֶΡ£³öÓÚÐÔÄܵĿ¼ÂÇ£¬Èç¹ûÿ¸öÇëÇó¶¼¼ÓÈëÁîÅÆÑéÖ¤½«¼«´óµÄÔö¼Ó·þÎñÆ÷µÄ¸ºµ££¬¾ßÌå²ÉÓÃÄÇÖÖ·½·¨¸üºÏÀí£¬ÐèÒª½÷É÷ÉóÊÓÿÖÖ±£»¤µÄÓÅȱµã¡£

1. ¼ì²é HTTP Í·²¿ Refer ÐÅÏ¢£¬ÕâÊÇ·ÀÖ¹ CSRF µÄ×î¼òµ¥ÈÝÒ×ʵÏÖµÄÒ»ÖÖÊֶΡ£¸ù¾Ý RFC ¶ÔÓÚ HTTP ЭÒéÀïÃæ Refer µÄ¶¨Ò壬Refer ÐÅÏ¢¸úËæ³öÏÖÔÚÿ¸ö Http ÇëÇóÍ·²¿¡£Server ¶ËÔÚÊÕµ½ÇëÇóÖ®ºó£¬¿ÉÒÔÈ¥¼ì²éÕâ¸öÍ·ÐÅÏ¢£¬Ö»½ÓÊÜÀ´×Ô±¾ÓòµÄÇëÇó¶øºöÂÔÍⲿÓòµÄÇëÇó£¬ÕâÑù¾Í¿ÉÒÔ±ÜÃâÁ˺ܶà·çÏÕ¡£µ±È»ÕâÖÖ¼ì²é·½Ê½ÓÉÓÚ¹ýÓÚ¼òµ¥Ò²ÓÐËü×ÔÉíµÄÈõµã£º

a) Ê×ÏÈÊǼì²é Refer ÐÅÏ¢²¢²»ÄÜ·À·¶À´×Ô±¾ÓòµÄ¹¥»÷¡£ÔÚÆóÒµÒµÎñÍøÕ¾ÉÏ£¬¾­³£»áÓÐͬÓòµÄÂÛ̳£¬ÓʼþµÈÐÎʽµÄ Web Ó¦ÓóÌÐò´æÔÚ£¬À´×ÔÕâЩµØ·½µÄ CSRF ¹¥»÷ËùЯ´øµÄ¾ÍÊDZ¾ÓòµÄ Refer ÓòÐÅÏ¢£¬Òò´Ë²»Äܱ»ÕâÖÖ·ÀÓùÊÖ¶ÎËù×èÖ¹¡£

b) ͬÑù£¬Ä³Ð©Ö±½Ó·¢ËÍ HTTP ÇëÇóµÄ·½Ê½£¨Ö¸·Çä¯ÀÀÆ÷£¬±ÈÈçÓúǫ́´úÂëµÈ·½·¨£©¿ÉÒÔαÔìһЩ Refer ÐÅÏ¢£¬ËäȻֱ½Ó½øÐÐÍ·ÐÅϢαÔìµÄ·½Ê½ÊôÓÚÖ±½Ó·¢ËÍÇëÇ󣬺ÜÄѸúËæ·¢ËÍ cookie£¬µ«ÓÉÓÚĿǰ¿Í»§¶ËÊֶβã³ö²»Çflash£¬javascript µÈ´ó¹æÄ£Ê¹Ó㬴ӿͻ§¶Ë½øÐÐ refer µÄαÔ죬ÓÈÆäÊÇÔÚ¿Í»§¶Ëä¯ÀÀÆ÷°²×°ÁËÔ½À´Ô½¶àµÄ²å¼þµÄÇé¿öÏÂÒѾ­³ÉΪ¿ÉÄÜÁË¡£

2. ʹÓÃÒ»´ÎÐÔÁîÅÆ£¬ÕâÊǵ±Ç° Web Ó¦ÓóÌÐòµÄÉè¼ÆÈËÔ±¹ã·ºÊ¹ÓõÄÒ»ÖÖ·½Ê½£¬·½·¨ÊǶÔÓÚ Get ÇëÇó£¬ÔÚ URL ÀïÃæ¼ÓÈëÒ»¸öÁîÅÆ£¬¶ÔÓÚ Post ÇëÇó£¬ÔÚÒþ²ØÓòÖмÓÈëÒ»¸öÁîÅÆ¡£Õâ¸öÁîÅÆÓÉ server ¶ËÉú³É£¬Óɱà³ÌÈËÔ±¿ØÖÆÔÚ¿Í»§¶Ë·¢ËÍÇëÇóµÄʱºòʹÇëÇóЯ´ø±¾ÁîÅÆÈ»ºóÔÚ Server ¶Ë½øÐÐÑéÖ¤¡£µ«ÔÚÁîÅÆµÄÉè¼ÆÉÏĿǰ´æÔÚ׿¸¸ö´íÎóµÄ·½°¸£º

a) ʹÓÃºÍ Session ¶ÀÁ¢µÄÁîÅÆÉú³É·½Ê½¡£ÕâÖÖÁîÅÆµÄÖµºÍ Session Î޹أ¬Òò´ËÈÝÒ×±»ÆäËûÓû§Î±Ôì¡£ÕâÀïµÄÆäËûÓû§Ö¸µÄÊǵ±Ç° Web Ó¦ÓóÌÐòµÄÆäËûÓû§ºÍ»îÔ¾ÔÚÍøÂç´«Êä½×¶Î¸÷¸öÉèÖÃÉϵļàÌýÕߣ¬ÕâÖÖ¶ñÒâÓû§¿ÉÄÜʹÓÃ×Ô¼ºµÄÁîÅÆÀ´½øÐÐÌæ»»ÒÔ±ã´ïµ½Î±ÔìµÄÄ¿µÄ¡£

b) ÍêȫʹÓà Session ÈÏÖ¤ÐÅÏ¢×÷ΪÁîÅÆµÄÉú³É·½Ê½¡£ÕâÖÖ±£»¤·½Ê½¶ÔÓÚ±£»¤ CSRF ÊÇÆðÁË×÷Óõ쬵«ÊÇ¿ÉÄÜ»áÔì³ÉÆäËûΣº¦£¬¾ßÌåÀ´Ëµ£¬Èç¹ûijЩ URL »òÕßÍøÒ³±»¿½±´ÏÂÀ´ÓëÆäËûÈ˹²Ïí£¬ÄÇôÕâЩ URL »òÕß¿½±´ÏÂÀ´µÄÍøÒ³ÖпÉÄܻẬÓÐÓû§µÄ»á»°ÐÅÏ¢£¬ÕâÖÖÐÅÏ¢Ò»µ©±»¶ñÒâÓû§»ñµÃ£¬¾ÍÄÜÔì³É¼«´óµÄΣº¦¡£

Òò´Ë£¬Ò»¸öÕýÈ·µÄÁîÅÆÉè¼ÆÓ¦¸ÃÊÇʹÓà Session ÐÅÏ¢×ö Hash£¬ÓõóöµÄ¹þÏ£ÖµÀ´×ö CSRF µÄÁîÅÆ¡£

3. ʹÓÃÑé֤ͼƬ£¬ÕâÖÖ·½·¨µÄ³öÏÖµÄ×÷ÓÃÊǶÔÓÚ»úÆ÷È˱©Á¦¹¥»÷µÄ·ÀÖ¹¡£µ«ÔÚ CSRF µÄ·À·¶ÉÏ£¬Ò²ÓÐһЩ°²È«ÐÔÒªÇó±È½Ï¸ßµÄµÄÓ¦ÓóÌÐò½áºÏÑé֤ͼƬºÍÒ»´ÎÐÔÁîÅÆÀ´×öË«ÖØ±£»¤¡£ÓÉÓÚÕâÖÖͼƬÑéÖ¤ÐÅÏ¢ºÜÄѱ»¶ñÒâ³ÌÐòÔÚ¿Í»§¶Ëʶ±ð£¬Òò´ËÄܹ»Ìá¸ß¸üÇ¿µÄ±£»¤¡£µ±¿Í»§¶ËµÄä¯ÀÀÆ÷¿ÉÄÜÒѾ­´¦ÓÚÒ»ÖÖ²»°²È«µÄ»·¾³ÖеÄÇé¿öÏ£¨±ÈÈç¿Í»§¶ËµÄ°²È«¼¶±ðÉèÖýϵͣ¬¿Í»§¶Ëä¯ÀÀÆ÷°²×°Á˲»°²È«µÄ²å¼þµÈ£©¡£

ÒÔÉϸøµÄÕâЩֻÊÇ·À·¶ CSRF µÄ±È½ÏͨÓõÄһЩ·½·¨£¬Web ¿ª·¢ÈËÔ±¿ÉÒÔ¸ù¾Ý×Ô¼º¶Ô×Ô¼ºµÄÓ¦ÓóÌÐòµÄ¹¦ÄܵÄÀí½âÀ´È·¶¨°²È«¼¶±ðµÄÒªÇó´Ó¶øÑ¡ÔñʹÓò»Í¬µÄ±£»¤´ëÊ©£¬Ò²ÍƼöÔÚͬһӦÓóÌÐòÄÚ²¿½áºÏʹÓöàÖÖ·½·¨À´½øÐб£»¤¡£

×ܽá

CSRF ¹¥»÷×÷Ϊһ¸ö´æÔÚÒѾõĹ¥»÷·½Ê½£¬ÔÚ´óÁ¿µÄÉÌÒµÍøÕ¾É϶¼¿ÉÒÔÕÒ³ö£¬Ó¦Óñ¾ÎĵÄ֪ʶ×÷³öÒ»¸öºÏÀíµÄ·ÖÎö£¬ÓÐÕë¶ÔÐÔµÄÌá³ö¸Ä½ø·½°¸²ÅÊDZ¾ÎÄ×÷ÕßÏ£Íû¿´µ½µÄ£¬ÔÚ¼´²»Ëðº¦Ó¦ÓóÌÐòµÄÐÔÄܵÄǰÌáÏ£¬Ìá¸ß°²È«ÐÔ£»¶ø¶Ô¼´½«¿ª·¢µÄÍøÂçÓ¦ÓóÌÐòÀ´Ëµ£¬Éî¿ÌÀí½âÆäµÄΣº¦ÐÔ£¬ÔÚÉè¼Æ½×¶Î¾Í¿¼Âǵ½¶Ô CSRF µÄ·À·¶£¬ÎÞÒÉÄÜÊÕµ½¸üºÃµÄЧ¹û¡£

   
3109 ´Îä¯ÀÀ       32
 
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
 
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
 
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

ʹÓÃdecj¼ò»¯Webǰ¶Ë¿ª·¢
Web¿ª·¢¿ò¼ÜÐγÉÖ®ÂÃ
¸üÓÐЧÂʵÄʹÓÃVisual Studio
MVP+WCF+Èý²ã½á¹¹´î½¨¿ò¼Ü
ASP.NETÔËÐлúÖÆÇ³Îö¡¾Í¼½â¡¿
±àд¸üºÃµÄC#´úÂë
10¸öVisual Studio¿ª·¢µ÷ÊÔ¼¼ÇÉ

.NET¿ò¼ÜÓë·Ö²¼Ê½Ó¦Óüܹ¹Éè¼Æ
.NET & WPF & WCFÓ¦Óÿª·¢
UML&.Net¼Ü¹¹Éè¼Æ
COM×é¼þ¿ª·¢
.NetÓ¦Óÿª·¢
InstallShield

ÈÕÕÕ¸Û .NET Framework & WCFÓ¦Óÿª·¢
Éñ»ªÐÅÏ¢ .NETµ¥Ôª²âÊÔ
±±¾© .NetÓ¦ÓÃÈí¼þϵͳ¼Ü¹¹
̨´ïµç×Ó .NET³ÌÐòÉè¼ÆÓ뿪·¢
ÈüÃÅÌú¿Ë C#Óë.NET¼Ü¹¹Éè¼Æ
¹ã¶«ºËµç .NetÓ¦ÓÃϵͳ¼Ü¹¹