永远不要相信用户输入的!

以前我所忽略的东西这是,现在才算彻底的明白,亏我还做了那么上时间的黑客爱好者。哎!说起来惭愧阿。。。

言归正传,起初还有点不敢苟同,现在看来我是真的明白了。

我们都知道HTTP协议本身就是非常不可靠的,不要相信任何用户的输入,包括Server变量里面的任何东西,这是HTTP安全编程的第一个指导原则。(我是记住了)必要的时候进行数据的重新效验。

我们都知道,怎么样去注入一个网站,如下面的代码

  $sql='SELECT * FROM asd WHERE name=\''.$_POST['name'].'\'';

这其实是一句很简单的代码,但是却缺少了必要的数据效验。本来可以获取一个人的权限的,前提是用户名正确,好,我们来构造下函数看看。

我们将传入的值换成'or''=''or' 里面就变成了 name='or''='or'' 本来只是一个单一的逻辑语句现在就变成了两个逻辑语句了 包含了 or 。这样就很显然可以骗过效验的代码了。

所以我们不要都认为用户一定会按照我们的预想进行输入我们想要的数据,他是黑客呢?

在看下面的一个例子,是我今天写的一个表单(在我没有真正体会到其中含义时写的)。

$value = $_G['gp_value'];

$sql = 'UPDATE XX SET value =\''.$value.'\'  WHERE ......';

看的出来下面几个不符合我现在说的规则--不要相信用户输入的数据

  1.没有进行空格的去除。用户无意间打了空格怎么办?

  2.没有进行数据的效验。如果黑客利用此函数构造攻击函数怎么办?

  3.没有进行必要的筛选操作。忽略了本地构造表单进行攻击,说白了还是缺少了数据的效验。

这是我今天所明白的道理。

所以,不要相信任何东西,如何在Client端验证过的东西,在服务器端必须要重新验证一次。抱着这个观点放在脑子里,写出来的程序会好一些。

 

转载于:https://www.cnblogs.com/upmyself/archive/2012/11/01/2750332.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值