php防止恶意充值,php token防止恶意提交

最近后台被扫描工具塞了好多数据,前不久已经做过处理,试用了UCHOME的formhash的方法,但是效果不是很明显,所以考虑要黑盒传递一个密钥,不然如果可以抓取到你表单中的隐藏域的话,表面上的一个令牌是不行的,必须要有一个key来验证这个令牌,并且这个KEY要能够每次都获取的不一样。下面分享我的代码:

/**

* 表单令牌(防止表单恶意提交)

*/

class Form_token_Core{

const SESSION_KEY = 'SESSION_KEY';

/**

* 生成一个当前的token

* @param string $form_name

* @return string

*/

public static function grante_token($form_name)

{

$key = self::grante_key();

$_SESSION['SESSION_KEY.$form_name'] = $key;

$token = md5(substr(time(), 0, 3).$key.$form_name);

return $token;

}

/**

* 验证一个当前的token

* @param string $form_name

* @return string

*/

public static function is_token($form_name,$token)

{

$key = $_SESSION['SESSION_KEY.$form_name']

$old_token = md5(substr(time(), 0, 3).$key.$form_name);

if($old_token == $token)

{

return true;

} else {

return false;

}

}

/**

* 删除一个token

* @param string $form_name

* @return boolean

*/

public static function drop_token($form_name)

{

$session->delete(SESSION_KEY);

return true;

}

/**

* 生成一个密钥

* @return string

*/

public static function grante_key()

{

$encrypt_key = md5(((float) date("YmdHis") + rand(100,999)).rand(1000,9999));

return $encrypt_key;

}

}

转载自:http://www.qinbin.me/phptoken/

这个就是不在表单隐藏那个token,而是在程序中利用 md5(时间戳+随机数+随机数)产生一个每次都不相同的key,然后再来验证,感觉还不错。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值