I was reading up on OWASP's page on CSRF and in their example they use a request where the sensitive parameters are stored in the query string:
http://bank.com/transfer.do?acct=MARIA&amount=100000
On my site I make a request where nothing sensitive is stored in the query string:
http://mysite.com/accounts/delete
But if you look at the raw request you can see the sensitive information:
POST /ajax/deletion/account HTTP/1.1
Host: www.mysite.com
Connection: keep-alive
Content-Length: 15
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
Content-Type: application/json; charset=UTF-8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: X-Mapping-fjhppofk=B8BFE26CD0B3A37348ECC6FFE3948274; connect.sid=s%3A4t4wfMTR6kCPRfwe5OEmYbse.Y%2FOfSmt%2Bo5JWDWglvUHIufOOFvfebr86CLiUcgdW6j8;
{"account_id":35653}
What I'm wondering is if I am safe from CSRF attacks since I do not include any parameters in my query string? If I'm not safe from CSRF, how would a malicious user submit a forged request?