Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql sql注入执行删除_Php_Mysql - Fatal编程技术网

php mysql sql注入执行删除

php mysql sql注入执行删除,php,mysql,Php,Mysql,如果有一个通过php脚本进行的查询易受攻击,如 select email from mytable where id = $_REQUEST['id'] 是否存在使用sql漏洞执行截断表等的风险 此查询使用mysql\u query()执行。不允许多个查询 我知道这是一个易受攻击的代码。我想知道的是,是否有人可以执行删除或截断。我想知道漏洞的范围,如果您允许用户自由填写“id”,请确保 例如: $\u请求['id']=123;从mytable中删除,其中1; 从mytable中选择电子邮件,其

如果有一个通过php脚本进行的查询易受攻击,如

select email from mytable where id = $_REQUEST['id']
是否存在使用sql漏洞执行截断表等的风险

此查询使用mysql\u query()执行。不允许多个查询


我知道这是一个易受攻击的代码。我想知道的是,是否有人可以执行删除或截断。我想知道漏洞的范围,如果您允许用户自由填写“id”,请确保

例如:

$\u请求['id']=123;从mytable中删除,其中1;
从mytable中选择电子邮件,其中id=123;从mytable中删除,其中1


如果使用
multi\u query()
,则将执行第二个查询。

是的,这不是执行查询的正确方法。让我们检查一下下面的简单SQL注入示例

<?php
// We didn't check $_POST['password'], it could be anything the user wanted! For example:
$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";

// Query database to check if there are any matching users
$query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND   password='{$_POST['password']}'";
mysql_query($query);

// This means the query sent to MySQL would be:
echo $query;
?>

您的查询非常容易受到sql注入的攻击

使用准备好的语句和参数化查询。

使用mysqli\ux,正确的方法如下:

$stmt = $connection->prepare('SELECT email FROM mytable WHERE id = ?');

$stmt->bind_param('s', $_REQUEST['id']);

$stmt->execute();

$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    // do whatever you need with $row
}

您也可以将准备好的语句与PDO一起使用

是否在前端显示查询?可能重复的是,thera是漏洞。您需要转义变量。我正在使用mysql_query()执行。不允许多个查询