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

WBOY
Freigeben: 2016-08-04 09:19:35
Original
1013 Leute haben es durchsucht

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预处理语句

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!