经典Web安全缺陷 Web Security Bug

Web安全方面的缺陷,是需要自己动手操作,然后做一些基本的分析。
下面我先从SQL注入风险方面进行分析。
Bug:testfire网站有SQL注入风险
缺陷标题:testfire网站>登录页面>登录框有SQL注入攻击问题。
1、SQL注入式攻击:就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。
SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没有什么区别,所以目前的防火墙都不会对SQL注入发出警报。
2、常见的SQL注入式攻击过程分类如下:
(1)、某个ASP.NET Web 应用有一个登录页面,这个登录页面控制着用户是否有访问权限应用,它要求用户输入一个名称和密码;
(2)、登录页面中输入的内容将直接构造动态的SQL命令,或直接用作存储过程的参数;
(3)、攻击者在用户名字和密码输入框中输入(如“ ‘or
’ 1 ’ = ‘1”);
(4)、用户输入的内容提交给服务器之后,服务器运行上面的ASP.NET代码构造出查询用户的SQL命令,但由于攻击者输入的内容非常特殊,所以最后得到的SQL命令变成
SELECT * from Users WHERE login = ’ ‘or ‘1’ = ‘1’ AND password =
’ ‘or ’ 1’ = ‘1’;
(5)、服务器执行查询或存储命令过程,将用户输入的身份信息和服务器中保存的身份信息进行对比。
(6)、由于SQL命令实际上已经被注入式攻击修改,已经不能真正
验证用户身份,所以系统会错误的授权给攻击者。
SQL的注入成功的危害是,如果用户的账号具有管理员或着其他更高级的权限,攻击者就可能对数据库的表执行他想要的操作,包括删除、添加、修改或更新数据,甚至可能删除表。
3、怎样防范SQL注入式攻击?
只要在利用表单输入的内容构造SQL名令之前,把所有的输入内容过滤一遍就可以了。
过滤方式有6中。
(1)、对于动态构造SQL查询的场合,可以使用下面的方法
A|、替换单引号,即就把所有出现的单引号换成两个引号,防止攻击者修改SQL命令的含义。
Example:
SELECT * from Users WHERE login = ’ ‘or ‘1’ = ‘1’ AND password =
’ ‘or ’ 1’ = ‘1’;
SELECT * from Users WHERE login = ’ ”or ”1” =’ ‘1” AND password =
’ ’ ‘or ’ ‘1’ ‘= ”1”;
B、删除用户输入内容中的所有连字符,防止攻击者构造出如下类的查询:
SELECT * from Users WHERE login = ‘man’ -AND password =”
因这个命令的后半部分已经被注释掉了,不在有效,只要攻击者知道一个合法的用户登录名称和根本就不需要知道密码就可以顺利活得权限了。
C、对于用来查询的数据库账户,限制其权限。
(2)、用存储过程来进行所有的查询。
(3)、限制表单或查询字符串的长度。
(4)、检查用户名输入的合法性。数据检查应该在客户端和服务器端都执行,在服务器端要检查的原因宏观就是弥补客户端验证的脆弱的安全性。在客户单验证主要原因就是怕攻击者获得网页的源代码,然后修改验证合法性的脚本,然后将非法内容通过修改后的表单提交给服务器。
(5)、将用户登录名称、密码等数据加密保存。加密用户输入的数据。然后将他与数据库保存的数据进行对比比较,防止攻击者注入SQL命令。
(6)、检查提取数据的查询所返回的记录。如果程序只要求返回一个记录,结果返回来的记录超过一行,那就当作出错处理。
4、SQL注入式常见类型
(1)、没有正确的过滤转义字符
(2)、数据库服务器中的漏洞
(3)、盲目SQL注入式攻击
(4)、条件响应
(5)、条件性差错
(6)、时间延误
这是一些粗略的分类。现在新型的攻击手段都是通过使用各种工具加速漏洞的利用。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值