我正在使用phpfox和userplane网络聊天,这个功能是从数据库中获取sessionGuid原始功能是: 功能1:
function get_current_online_session_login() {
$oSrvSec = &App::getModuleService('Account', 'Security');
$login = $oSrvSec->getCurrentUserLogin();
$aReq = getRow(App::getT('online_session'), 'online_session_user = "' . $login . '"');
// return $aReq['online_session_login'];
return $aReq['online_session_id'];
}
我在其中进行更改,因此它返回盐渍哈希但Chat无效并显示您无权进入聊天的错误。 以下是我在此代码中所做的更改:
function get_current_online_session_login() {
$oSrvSec = &App::getModuleService('Account', 'Security');
$login = $oSrvSec->getCurrentUserLogin();
$aReq = getRow(App::getT('online_session'), 'online_session_user = "' . $login . '"');
$salt='waka_waka_shaka_laka_8342394';
// return $aReq['online_session_login'];
$umSar = $aReq['online_session_id'];
$saltedHash = md5($umSar . $salt);
return $saltedHash;
}
在这个文件中有2个session_id函数所以我不知道如何解决这个问题 这是第二个session_id函数: 功能2
function get_user_with_session_id($session_id) {
$session = getRow(App::getT('online_session'), "online_session_id = '$session_id'");
// $session = getRow(App::getT('online_session'), "online_session_login = '$session_id'");
$oSecurityService = &App::getModuleService('Account', 'Security');
$user = $oSecurityService->getUserByName($session['online_session_user']);
return isset($user) ? $user->aData['id'] : null;
}
我需要帮助。 你可以看到函数1:和函数2:是我的common.php文件中的原始函数,这个函数返回session_id的正常数字,我想将session_id作为md5 salted hash或base_64返回。 感谢
答案 0 :(得分:0)
首先必须检查crypt()方法是否支持MD5,然后将字符串传递给加密以及salt,从$ 1 $开始。请参阅crypt() on PHP.net。
if (CRYPT_MD5 == 1) {
$saltedHash' . crypt($umSar, '$1$waka_wak$') . "\n";
}
请注意,对于MD5,盐的长度必须为12个字符。
答案 1 :(得分:0)
如果您正在考虑取消加密online-session-id
function get_current_online_session_login()
加密mcrypt_decrypt
,而这不是md5哈希的目的。
如果您想加密/解密,可以使用mcrypt_encrypt
,base64_encode
和base64_decode
,{{1}}等功能。
答案 2 :(得分:0)
首先你应该明白,session-id是什么。通常服务器无法识别用户已经在网站上执行过某些操作,每个请求都像是一次新访问。为了记住用户及其操作,服务器将它们与随机数一起存储,即session-id。
此会话ID将传递给浏览器,如果用户例如按下一个按钮,此会话ID将被处理回服务器。现在,服务器可以使用此编号查找存储的操作,因此将记住"用户。
在您的示例中,您获取了session-id,使用单向散列函数销毁它,并将其传递给浏览器。当浏览器处理这个无效的session-id时,服务器有没有机会来查找带有此无效号码的存储操作。
也就是说,session-id只是一个数字,用于重新绑定服务器上已存储的信息。当你改变这个数字时,它确实决不会提高安全性,因为浏览器只会发回他得到的东西,服务器必须识别它,无论他以前是否加密/混淆了它。
如果你的session-id是可预测的,比如203,204,...,那么你应该找到生成这些不适当数字的代码片段并修改这段代码,这样就可以产生真正的#34;随机数。