0

对于会话处理,我使用 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);
    }
4

1 回答 1

1

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

于 2012-11-26T16:36:45.270 回答