1

I have this piece of PHP, I just wanna make sure it's safe from SQL injection and security vulnerabilities:

<?php
require_once "./source/includes/data.php";
header('Content-type: application/json');
$request = mysql_real_escape_string($_REQUEST['email_address']);

$query = mysql_query("SELECT * FROM mmh_user_info WHERE email_address ='$request'");
$result = mysql_num_rows($query);
if ($result == 0){
$valid = 'true';}
else{
$valid = 'false';
}
echo $valid;
?> 

I'm still a php newbie, any enhancements or edits would be greatly appreciated!

4

2 回答 2

4

我建议您使用正在成为 PHP5 标准的 PDO:

$sth = $dbh->prepare("SELECT * FROM mmh_user_info WHERE email_address = ?");
$sth->execute(array($_REQUEST['email_address']));
$red = $sth->fetchAll();
于 2013-05-16T23:18:18.753 回答
1

对于用户在此出色答案中指出的要点,我将使用 $_POST 而不是 $_REQUEST Pascal MARTIN

$_REQUEST, 默认情况下, 包含$_GET,$_POST和的内容$_COOKIE

但这只是一个默认值,这取决于variables_order; 并且不确定您是否要使用 cookie。

如果我必须选择,我可能不会使用$_REQUEST,我会选择$_GET$_POST-取决于我的应用程序应该做什么 (即一个或另一个,但不是两者):一般来说:

  • $_GET当有人您的应用程序请求数据时,您应该使用。
  • $_POST当有人向您的应用程序推送插入或更新;或删除)数据时,您应该使用它。

无论哪种方式,性能不会有太大差异:与脚本的其余部分相比,差异可以忽略不计。

于 2013-05-16T23:26:02.477 回答