CSRF原理
CSRF (跨站请求伪造 Cross-site request forgery):诱导用户访问黑客的网站,并且让他点击某些按钮之类的,在用户不知情的情况下发送一些请求到目标网站,比如:发送的请求是一条银行转账请求,且这个银行网站刚好用户之前有访问过,认证信息还有小的情况下,就有可能会导致用户的资金在不知情的情况下被转走
解决方法
- 使用HTTP头的Referer字段,该字段会是发起请求的源网站地址,服务器收到请求后可以比对Referer字段是不是本网站的网址,如果一致就没问题,不一致则拒绝处理请求。
- 添加校验token(如图片验证码),可以在正规网站里添加一些图片生成的随机数,让用户发请求的时候识别并输入这个随机数,这样随后发送的请求中会包含这个token随机数,服务器可以验证这个token随机数是否正确。如果是CSRF伪造的请求是不会携带这个token随机数,就不会被服务器承认,拒绝处理请求。
CSRF:使用你的认证身份,发送恶意请求。
以你名义发送邮件,发消息,恶意购买商品,转账交易等等。
XSS原理
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。
解决方法
- 用户向服务器上提交的信息要对URL和附带的的HTTP头、POST数据等进行查询,对不是规定格式、长度的内容进行过滤。
- 实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
- 确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。