Sto avendo un dibattito con un collega per sapere se il nostro sito è vulnerabile agli attacchi CSRF. Sta dicendo che dal momento che stiamo usando richieste RESTful AJAX per tutto ciò che CSRF non è possibile. Di 'una richiesta di aggiornamento delle informazioni del tuo account simile a questa:
POST /ajax/account/savebasic HTTP/1.1
Host: www.mysite.com
Connection: keep-alive
Content-Length: 72
Accept: application/json, text/javascript, */*; q=0.01
Origin: https://www.mysite.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65 Safari/537.36
Content-Type: application/json; charset=UTF-8
Referer: https://www.mysite.com/portal
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: X-Mapping-fjhppofk=B8BFE26CD0B3A37348ECC6FFE3940306; sdemail_5228=tester%40test.com; sd_5228=%7B%7D; connect.sid=s%3AAQIPx7hyddXEYTOuyP857jEG.D002GI6%2FSEF0m5WTBUxRmbjpE48%2BMkPxEe9o2T9DH1Y; __utma=160595647.1524201255.1358783236.1379476052.1379533347.150; __utmb=160595647.1.10.1379533347; __utmc=160595647; __utmz=160595647.1376327581.102.3.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=http://mysite.com/
{"fname":"abe","lname":"m","company":"comp","email":"[email protected]"}
Ho creato una pagina HTML di prova su testdomain.com
come quella seguente:
<html>
<head>
<title>Bad site</title>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<div id="main">Hey!</div>
<script type="text/javascript">
$.ajax({
type: "POST",
url: "http://www.mysite.com/ajax/account/savebasic",
data: {
"fname": "CSRF",
"lname":"CSRF",
"company":"CSRF",
"email":"[email protected]"
},
dataType: "jsonp"
});
</script>
</body>
</html>
Pensando che avrebbe sovrascritto tutto, ma reindirizza alcune volte e alla fine genera un errore 404. Il mio collega ha ragione nel dire che siamo al sicuro da CSRF perché usiamo AJAX / REST?