我可以用这段代码入侵吗?

Reb*_*ack 6 php mysql security

我购买了一个脚本,里面有一些奇怪的代码.我是一名PHP初学者,但对清理输入数据等事情有所了解.

这是代码:

<form action="sendpass.php" method="post" id="sendpassform">
<input type="text" name="email" />
<input type="submit" name="sendpass" value="Send" />
</form>
?>

...
if($_REQUEST['email'] != ''){
  $email = $_REQUEST['email'];
  $k = mysql_query("SELECT * FROM users WHERE email='".$email."'") or die(mysql_error());
  $result= mysql_fetch_array($k);
  ....
}
Run Code Online (Sandbox Code Playgroud)

我很好奇的是,如果有人可以使用此表单破解网站,因为电子邮件字段只是通过任何转义直接传递给SQL ...

Dan*_*ite 7

是.这称为SQL注入.任何用户提供的值都直接包含在SQL语句中,这是可能的.


Osc*_*mez 7

使用SQL注入非常容易.


Ada*_*sey 7

你应该这样做 $email = mysql_real_escape_string($_REQUEST['email']);

这应该可以防止任何SQL注入攻击.

要回答你的问题,这是可能的,但是否有任何损害取决于你对从MySQL检索到的数据做了什么(未显示)

  • 当然可能会造成损害.例如,您可以删除整个数据库.或者使用`$ email ="'OR 1 = 1;"`转储用户表 (2认同)