检查客户端提供的Php SID是否有效?

时间:2012-11-26 16:33:30

标签: php session sessionid

对于会话处理,我使用mysql而不是默认的基于php文件的处理。

所以在从db读取会话信息之前,我想验证客户端提供的会话ID是否有效,我写了一个函数,它看起来现在正常工作,但仍然想与大家核实一下

private function validSID($id) {
        return !empty($id) && preg_match('/^[a-zA-Z0-9,-]{26,40}$/', $id);
    }

谢谢大家

修改 我按照你们的建议进行了修改,如下所示

private function validSID($id) {
        //make sure the length is 22
    //things are based on   session.hash_bits_per_character = 6
    return preg_match('/^[a-zA-Z0-9,-]{22}$/', $id);
    }

1 个答案:

答案 0 :(得分:1)

您正在检查有效数字,但完全忽略了PHP的会话ID是基于各种.ini参数的固定长度的事实。您应该定制您的支票,以便拒绝任何与PHP的当前设置不匹配的ID字符串,例如其中包括hash_bits_per_character