譬如在提交评论时、在配置个人主页时插入特定代码,远程发送document.cookie等。
防御方法:cookie加httponly,encode用户输入的内容(转义<>等字符),尽量不要讲用户的内容作为html源码的一部分输出
2、XST(Cross Site Tracing),即跨站脚本攻击+http的trace方法。当cookie加入了httponly后,直接用js获取不到document.cookie。不过http有一个trace方法,其本意是用于调试,将最终到达服务器的http请求数据原封不动的返回给客户端,客户端可以查看请求数据在网络传输过程中是否有改动,而与原始请求有区别。黑客们用js发起一个trace请求到目标网站,这样http only的cookie也会发送并且原封不动的返回回来,这样也就获取到了httponly的cookie了。
防御方法:关闭trace方法,如apache config中加入TraceEnable off。
3、CSRF(Cross Site Request Forgery):跨站点请求伪造,在攻击者自身的站点上通过插入iframe、img等标签link到目标站点的特定url达到攻击目的。
譬如诱使用户登录目标网站,然后在攻击者站点上诱使用户打开某些网页,这些网页中有link、图片等发起特定请求(如删除日志、发送留言等)到目标站点实施攻击。
CSRF中的几个名词:
session cookie:关闭浏览器就失效的cookie
third-party cookie:会在客户端存储到某个指定时间的cookie
有些浏览器在跨域访问时,譬如img、script、iframe等链接到外部网站时,会只发送third-party的cookie到外部网站,如IE、Safari,同时这些外部网站返回的cookie也无法设置成功。
P3P头:会改变上述的这种安全策略。对于需要跨域访问的页面(如广告),需要保证third-party的cookie能够正确发送以及设置,所以都会有P3P头。

一旦设置了P3P头,第三方cookie就能够跨域发送、设置了。
防御方法:
1、采用POST(屏蔽采用img、script等发起get请求攻击)
2、验证码、token等
3、refer检测(屏蔽请求来源url不是白名单的情况)
4、url参数扰乱(让攻击者猜不出请求参数)
最后,XSS和CSRF可以组合,通过XSS让任意站点成功CSRF攻击的发起站点,甚至让目标站点自身攻击自身。
实例:
XSRF攻击实例,注入cnodejs.org官网
关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)