大家好,下面给出的php代码是我的,我需要知道它是否易受攻击。
$sql = "select Email,Password from user where Email='$emailid'";
$ctr=0;
try
{
$result = $con->query($sql);
foreach($result as $row)
{
$ctr++;
$pword = $row['Password'];
}
}
catch(PDOException $e)
{
$errTyp = "danger";
$errMSG = "Something went wrong, try again later...";
}
if($ctr == 0)
{
$errTyp = "danger";
$errMSG = "Invalid Username | Password";
}
else
{
if( $pword==$password ) {
$_SESSION['Id']=$emailid; 这是我的php登录页面代码,只是为了确认一下,上面的代码对sql注入有多大的脆弱性?
发布于 2016-12-16 19:43:34
很简单,
$sql = "select Email,Password from user where Email='$emailid'"; 如果$emailid可以是,
$emailid = 'or 1=1';注射,
$sql = "select Email,Password from user where Email=''or 1=1"; 它将返回数据库的第一条记录。
所以攻击就会发生!
发布于 2016-12-16 19:44:56
我认为主要的问题可能是$emailid的起源
Email='$emailid'"您不能信任从客户端($_POST,$_GET)发送的数据。这是安全方面的一个主要原则。所以,如果你已经清理/过滤了POST变量,你应该没问题。如果不是,则至少应该使用预准备语句
https://stackoverflow.com/questions/41183542
复制相似问题