gpt4 book ai didi

php - 在 MySQL 查询中使用 GET 变量是否安全?

转载 作者:行者123 更新时间:2023-11-30 23:56:49 24 4
gpt4 key购买 nike

我有一个简单的场景:用户连接到“get.php?city=london”,然后服务器在 MySQL 数据库中搜索与该请求匹配的数据并将其输出。

我正在使用以下代码来执行此操作:

<?php
$con = mysql_connect( 'localhost', 'user', 'pass') or die('Could not connect to mysql server.' );
mysql_select_db('mydb', $con) or die('Could not select database.');

if(!isset($city)) return;
$c=$_GET["city"];

$q = "select * FROM cities WHERE city = '{$c}'";
$re = mysql_query($q);
... etc

像这样简单地将 GET 变量插入到查询中是否安全?这会让我容易受到 MySQL 注入(inject)的攻击吗?有没有更安全的方法来做到这一点?

问候

更新:

这样会更安全吗?

if(!isset($city)) return;
$city=$_GET["city"];

$q = "SELECT row1, row2 WHERE city= ?;";
$mysqli = new mysqli('localhost', 'root', 'pass', 'dbname');

$stmt = $mysqli->stmt_init();
if($stmt->prepare($q)){
$stmt->bind_param("s", mysql_real_escape_string($city));
$stmt->execute();
$stmt->bind_result($row1, $row2);
while ($stmt->fetch()) {
//do stuff with the data in the $row array
}
$stmt->close();
}

最佳答案

它一点也不安全,只需更改网址即可伪造 GET 请求。

关于php - 在 MySQL 查询中使用 GET 变量是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21664191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com