[問題]請問一個論壇登入時的程式碼問題
發表於 : 2006-01-11 02:25
if( isset($HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']) || isset($HTTP_POST_VARS['logout']) || isset($HTTP_GET_VARS['logout']) )
{
if( ( isset($HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']) ) && !$userdata['session_logged_in'] )
{
$username = isset($HTTP_POST_VARS['username']) ? trim(htmlspecialchars($HTTP_POST_VARS['username'])) : '';
$username = substr(str_replace("\\\'", "'", $username), 0, 25);
$username = str_replace("'", "\\\'", $username);
$password = isset($HTTP_POST_VARS['password']) ? $HTTP_POST_VARS['password'] : '';
$sql = "SELECT user_id, username, user_password, user_active, user_level
FROM " . USERS_TABLE . "
WHERE username = '" . str_replace("\\\'", "''", $username) . "'";
.....
最近在研究論壇的程式碼,其中在login.php中一開始判斷使用者輸入的username, 不是為了要防止惡意輸入所以利用 addslashes() 將 ' 置換成 \'
可是為何上述程式碼又一而在的 把已經置換的 \' 再置換為 '
最後串sql 指令時 還是置換了 \' 成 ' , 這樣不是很危險嗎?
不知道有沒有大大可以解答一下~ 謝謝 ~
{
if( ( isset($HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']) ) && !$userdata['session_logged_in'] )
{
$username = isset($HTTP_POST_VARS['username']) ? trim(htmlspecialchars($HTTP_POST_VARS['username'])) : '';
$username = substr(str_replace("\\\'", "'", $username), 0, 25);
$username = str_replace("'", "\\\'", $username);
$password = isset($HTTP_POST_VARS['password']) ? $HTTP_POST_VARS['password'] : '';
$sql = "SELECT user_id, username, user_password, user_active, user_level
FROM " . USERS_TABLE . "
WHERE username = '" . str_replace("\\\'", "''", $username) . "'";
.....
最近在研究論壇的程式碼,其中在login.php中一開始判斷使用者輸入的username, 不是為了要防止惡意輸入所以利用 addslashes() 將 ' 置換成 \'
可是為何上述程式碼又一而在的 把已經置換的 \' 再置換為 '
最後串sql 指令時 還是置換了 \' 成 ' , 這樣不是很危險嗎?
不知道有沒有大大可以解答一下~ 謝謝 ~