漏洞名稱:phpcms注入漏洞
文件路徑:/phpcms/modules/member/index.php
修復方法來源于網絡,由風信網整理提供。
源代碼大概615行:
if(empty($_SESSION['connectid'])) {
//判斷驗證碼
$code = isset($_POST['code']) && trim($_POST['code']) ? trim($_POST['code']) : showmessage(L('input_code'), HTTP_REFERER);
if ($_SESSION['code'] != strtolower($code)) {
$_SESSION['code'] = '';
showmessage(L('code_error'), HTTP_REFERER);
}
$_SESSION['code'] = '';
}
$username = isset($_POST['username']) && is_username($_POST['username']) ? trim($_POST['username']) : showmessage(L('username_empty'), HTTP_REFERER);
$password = isset($_POST['password']) && trim($_POST['password']) ? trim($_POST['password']) : showmessage(L('password_empty'), HTTP_REFERER);
針對phpsso模塊添加過濾代碼,最好的方式應該是將轉義和過濾放在數據庫操作的前一步,這樣可以極有效緩解SQL注入帶來的問題
修改代碼:
$password = isset($_POST['password']) && trim($_POST['password']) ? trim($_POST['password']) : showmessage(L('password_empty'), HTTP_REFERER);
改為:
$password = isset($_POST[‘password‘]) && trim($_POST[‘password‘]) ? addslashes(urldecode(trim($_POST[‘password‘]))) : showmessage(L(‘password_empty‘), HTTP_REFERER);
文件路徑:/phpcms/modules/member/index.php
修復方法來源于網絡,由風信網整理提供。
源代碼大概615行:
if(empty($_SESSION['connectid'])) {
//判斷驗證碼
$code = isset($_POST['code']) && trim($_POST['code']) ? trim($_POST['code']) : showmessage(L('input_code'), HTTP_REFERER);
if ($_SESSION['code'] != strtolower($code)) {
$_SESSION['code'] = '';
showmessage(L('code_error'), HTTP_REFERER);
}
$_SESSION['code'] = '';
}
$username = isset($_POST['username']) && is_username($_POST['username']) ? trim($_POST['username']) : showmessage(L('username_empty'), HTTP_REFERER);
$password = isset($_POST['password']) && trim($_POST['password']) ? trim($_POST['password']) : showmessage(L('password_empty'), HTTP_REFERER);
針對phpsso模塊添加過濾代碼,最好的方式應該是將轉義和過濾放在數據庫操作的前一步,這樣可以極有效緩解SQL注入帶來的問題
修改代碼:
$password = isset($_POST['password']) && trim($_POST['password']) ? trim($_POST['password']) : showmessage(L('password_empty'), HTTP_REFERER);
改為:
$password = isset($_POST[‘password‘]) && trim($_POST[‘password‘]) ? addslashes(urldecode(trim($_POST[‘password‘]))) : showmessage(L(‘password_empty‘), HTTP_REFERER);