在每个 php 脚本的开头,我循环遍历可能的POST
和GET
输入,正确过滤它们,所以稍后当我需要输入时,我可以使用我的自定义、安全、过滤变量(它是一个包含 POSTS 和 GETS 的数组) 而且我不必碰 $_GET 和 $_POST。
如果变量是散列值、40 个字符的 SHA1 或 64 个字符的 Adobe Stratus ID,我如何识别它们?
我不希望用户发布一些无意义的数据。
测试一个字符串是否为轴长哈希值:
$x = 40
$string = "inputstring";
$boolResult = (preg_match('/^[0-9a-f]{'$x'}$/i', $string) == true) ? true : false;
您可以将 SHA1 哈希与正则表达式匹配,例如:
/[0-9a-f]{40}/
在 PHP 中:
foreach($_GET as $get) {
if (preg_match('/[0-9a-f]{40}/i', $get)) {
// do something
}
}
我不同意您应该避免 _POST 和 _GET 访问,而是应该尽可能清理它们以避免 XSS。(https://en.wikipedia.org/wiki/Cross-site_scripting)。CodeIgniter 有一个很棒的安全库,你可以捏住并插入你自己的东西。
除此之外,我不确定......但我认为你是在要求从会话中解密散列值?
当大多数哈希sha
等md5
返回十六进制格式时..您可以使用轻松检测它们ctype_xdigit
if (ctype_xdigit($value)) {
// It must be Hex
}
我不知道是什么Adobe Stratus ID
样子,但你也可以很容易地验证它preg_match
。
有些也可以进来base64
你也可以用
if ( base64_encode(base64_decode($data)) === $data){
// it must be base 64
}