XSS
Cross Site Scripting 跨站脚本攻击
通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序
SQL注入
指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
CSRF
Cross Site Request Forgery 跨站请求伪造
攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。
原理:
用户A登录了网站B,进行了转账操作 (GET请求) ,
在网站B页面没有关闭的条件下,访问恶意网站C,
恶意网站C获取到网站B转账操作的接口,发送一个GET请求 (因为网站B还处于登录状态,cookie和session还在,网站B的服务端以为是用户A通过网站B发出的正常请求) ,
所以进行转账。
恶意网站C发送的GET请求可能是:
<img src='https://123.57.5.134/money/user=fu&money=10000'>
后来为了防止攻击,网站B服务端将这个接口换成了POST请求,但是,攻击者又破解了,使用 iframe 嵌套form表单,成功的模拟了POST请求,继续进行恶意转账。
安全大佬们最后使用了下面几种方法防止和减少攻击:
防止攻击
- 尽量使用POST请求
- 使用验证码,可以判断这是人为的进行转账,而不是黑客技术
- 验证Referer,服务端设置Referer,判断用户的IP地址,来防止恶意网站IP进行操作。