Rumah > pembangunan bahagian belakang > tutorial php > PHP web应用当存在注入的情况下,如何写用户登录防止通过注入绕过登录

PHP web应用当存在注入的情况下,如何写用户登录防止通过注入绕过登录

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-08-04 09:19:35
asal
1095 orang telah melayarinya

PHP web应用当存在注入的情况下,如何写用户登录防止通过注入绕过登录

假设条件不可改,不要回答防止注入

一般的2中写法
·
1
$sql = "select * from user where user_name=$username and password=$password";
$res = $db_obj->get_one($sql);
if($res){
//登录成功
}
·
·
2
$sql = "select * from user where user_name=$username";
$res = $db_obj->get_one($sql);
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);
if($res){
//登录成功
}
·
·
2
$sql = "select * from user where user_name=$username";
$res = $db_obj->get_one($sql);
if($res[password]==md5($password)){
//登录成功
}
·
以上2中均可绕过,求安全写法

既然已经存在注入漏洞,不仅登录可以绕过,连你的数据库都是不安全的。如果知道你的表结构,插入一个管理员帐号也是很简单的事。所以关键还是要防注入,而不是注入以后怎么办。

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

一般的写法难道不是使用 orm 读写数据库?
手写 sql,本身就不安全

使用PDO预处理语句

Label berkaitan:
php
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan