通过为 Cookie 启用 HttpOnly 属性,可以有效降低 XSS 攻击带来的风险,具体操作步骤如下:
1. 找到“includelibloginauth.php”文件,在其中定位到第134行的setAuthCookie函数,并将其修改为以下代码:
/*** 写用于登录验证cookie** @param int $user_id User ID* @param bool $remember Whether to remember the user or not*/public static function setAuthCookie($user_login, $ispersis = false) {if ($ispersis) {$expiration = time() + 3600 * 24 * 30 * 12;} else {$expiration = null;}$auth_cookie_name = AUTH_COOKIE_NAME;$auth_cookie = self::generateAuthCookie($user_login, $expiration);setcookie($auth_cookie_name, $auth_cookie, $expiration,'/', '', false,true);}2. 再将第212行的genToken函数修改为:
/*** 生成token,防御CSRF攻击*/public static function genToken() {$token_cookie_name = 'EM_TOKENCOOKIE_' . md5(substr(AUTH_KEY, 16, 32) . UID);if (isset($_COOKIE[$token_cookie_name])) {return $_COOKIE[$token_cookie_name];} else {$token = md5(getRandStr(16));setcookie($token_cookie_name, $token, 0, '/', '', false, true);return $token;}}3. 保存以上修改后,即可为 Cookie 设置 HttpOnly,从而提升 emlog 的安全性,并在一定程度上防止 XSS 攻击。
