PHP web應用在存在註入的情況下,如何寫入使用者登入防止透過注入繞過登入
Aug 04, 2016 am 09:19 AM
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預處理語句

熱門文章

熱門文章

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發
