PHP web應用在存在註入的情況下,如何寫入使用者登入防止透過注入繞過登入

WBOY
發布: 2016-08-04 09:19:35
原創
1046 人瀏覽過

PHP web應用程式當存在註入的情況下,如何寫使用者登入防止透過注入繞過登入

假設條件不可改,不要回答防止注入

一般的2中寫法
·
1
$sql = "select * from user where user_name=$username and password=$password";
$res = $db_obj->get_one($sql); ){
//登入成功
}
·
·
2
$sql = "select * from user where user_name=$username";
$res = $db_obj->get_one($sql);
if($res
if($res [password]==md5($password)){
//登入成功
}
·
以上2中均可繞過,求安全寫法

回覆內容:

PHP web應用程式當存在註入的情況下,如何寫使用者登入防止透過注入繞過登入

假設條件不可改,不要回答防止注入

一般的2中寫法
·
1
$sql = "select * from user where user_name=$username and password=$password";
$res = $db_obj->get_one($sql); ){
//登入成功
}
·
·
2
$sql = "select * from user where user_name=$username";
$res = $db_obj->get_one($sql);
if($res
if($res [password]==md5($password)){
//登入成功
}
·
以上2中均可繞過,求安全寫法

既然已經存在註入漏洞,不只登入可以繞過,連你的資料庫都是不安全的。如果知道你的表格結構,插入一個管理員帳號也是很簡單的事。所以關鍵還是要防注入,而不是注入以後怎麼辦。

最簡單的
$sql = "select * from user where user_name='".addslashes($username)."'";

一般的寫法難道不是使用 orm 讀寫資料庫?
手寫 sql,本身就不安全

使用PDO預處理語句

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板