????CSRF??????
????CSRF??Cross-site request forgery????????????????????α??????????one click attack/session riding????д???CSRF/XSRF??CSRF??Cross Site Request Forgery?? ?????????α???????????????????????? 2007 ??????????????? 20 ???????????????????????????? SQL ???????????????????????????????????????????????????????????????????????????????????????CSRF ??????????????????????????????? Gmail?? ?? 2007 ?????????? CSRF ??????????????????? Gmail ????????????????
????CSRF??????????
?????????????????CSRF????????????????????????????????巢?????????CSRF???????????????????????巢????????????????????????????????????????????????......????????????????????й????????????
????CSRF???????

?????????????????????????CSRF????????????????????????????裺
????1.????????????A?????????????Cookie??
????2.??????A??????£?????Σ?????B??
?????????????????????“???????????????????????е??????????????CSRF?????”???????????????????????????????????
????1.????????????????????????????tab??沢??????????????
????2.???????????????????????Cookie????????????ε??????????????????????????????????????????????????????????????????????????????/????????......??
????3.???????ν????????????????????????????????????ε?????????????????
?????????????????CSRF?????????????????????????????????CSRF????????????????????????????????????????????????????????????????:>??
???????????A??????GET???????????????????????磺http://www.mybank.com/Transfer.php?toBankId=11&money=1000
????Σ?????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”????????????????????????????????????????????????????????????????????????????......
??????????? CSRF ????????
??????????????? CSRF ???????????????????? HTTP Referer ??Σ?????????????? token ????????? HTTP ?????????????????????????????????????????????
??????? HTTP Referer ???
???????? HTTP Э?飬?? HTTP ??????????ν? Referer?????????? HTTP ??????????????????????£????????????????????????????????????????????????? http://bank.example/withdraw?account=bob&amount=1000000&for=Mallory????????????? bank.example???????????????????????????????????????????????? Referer ??????????????????? URL????????? bank.example ????????????????????????????????? CSRF ???????????????????????????????????????????????????????????????????? Referer ?????????????????????????? CSRF ????????????????????????????????????? Referer ?????????? bank.example ?????????????????????????????????????????????????????? Referer ?????????????????п???????? CSRF ???????????????
?????????????????????????????У????????????????????????? CSRF ??????????????????а????е????????????????????????? Referer ?????????????????????е???????????????????κ????д???????????з???????????
????????????????????????????Referer ???????????????????? HTTP Э?????????????????????????????? Referer ????????????в?????????????????????а????????????? Referer ???????????????????????????????????????????????????????????????????????????????????Щ??????????? IE6 ?? FF2??????????Щ?????????? Referer ?????? bank.example ?????? IE6 ???????????????????????????? Referer ?????? bank.example ???????????????????????????????????? CSRF ??????
??????????????μ????????????????? Referer ?????????????????????? Referer ??????????????????????Щ???????????????????????????????????????Щ??????? Referer ????????????е??Щ???й????????С??????????????????????????????????????????? Referer????????????????????????????????????????? Referer ???????? CSRF ?????????????????????
????????????????? token ?????
????CSRF ???????????????????????????????α??????????????????????е??????????????????? cookie ?У?????????????????Щ???????????????????????????? cookie ?????????????????? CSRF????????????????з???????????α???????????????????????? cookie ??С??????? HTTP ???????????????????????????????? token????????????????????????????????? token?????????????? token ???? token ????????????????????? CSRF ???????????????
???????????????? Referer ?????Щ??token ??????????????????????? session ??У???????????????? token ?? session ???ó??????????е? token ???б????????????????????????? token ?????????????????????? GET ????token ??????????????????? URL ??? http://url?csrftoken=tokenvalue?? ?????? POST ???????????? form ?????? <input type=”hidden” name=”csrftoken” value=”tokenvalue”/>???????? token ???????????????????????????????????У????????????????????????????????????? token ????鷳????????????????????????????????????????????? javascript ???????? dom ???????? dom ?????е? a ?? form ???????? token????????????????????????????????????????????? html ????????????????????????????????????????? token??