php - 在 php 中发送加号获取 url 参数

标签 php postgresql sql-injection

我在 url 中发送参数。但是当尝试在 url 中写入“0+880”变量时,查询失败。这就是问题所在,这是我的一些代码

$table = $_GET['table'];
$yerId= $_GET['km'];

$sql = pg_query("SELECT  turu, hat_kesimi, ili, ilcesi, mahadi FROM $table WHERE km = $yerId");
if (!$sql) { 
    echo "Problem with query " . $sql . "<br/>"; 
    echo pg_last_error(); 
    exit(); 
}             

这里是 url 和 google 返回的 url:

/weekend/index.php?dbname=tcdd&table=hemzemin_gecit&km=0^880#tab-1

谷歌 react :

查询有问题

ERROR: operator does not exist: character varying = double precision 
LINE 1: ...mi, ili, ilcesi, mahadi FROM hemzemin_gecit WHERE km = 0^880 
                                                                ^ 
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

另一个网址:

/weekend/index.php?dbname=tcdd&table=hemzemin_gecit&km=0%2B880#tab-1

谷歌 react :

查询有问题

ERROR: operator does not exist: character varying = integer 
LINE 1: ...mi, ili, ilcesi, mahadi FROM hemzemin_gecit WHERE km = 0+880 
                                                                ^ 
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

最佳答案

这有很多的问题。让我们从:

  • 您没有使用 PDO,您使用的是遗留 pg_ 函数;

  • 您正在使用带有字符串插值的 pg_queryBobby says hi .参见 SQL injection (wikipedia) , SQL injection (PHP) ;

  • 您没有将 $yerId 作为文字引用,例如'$yerId',即使不安全

  • ,您也必须这样做才能使此查询正常工作

请:use PDO , 或 at least pg_query_params .

关于php - 在 php 中发送加号获取 url 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25907952/

相关文章:

MySQL 与 PostgreSQL?我应该为我的 Django 项目选择哪个?

entity-framework - IQueryable SQL 注入(inject)证明是否使用 Entity Framework ?

php - PHP输出到文件以供下载,而无需在服务器上创建文件

php - Laravel 中 `HtmlString` 有什么用?

php - 通过在 url 中传递值来删除数据库

java - 错误代码 : Why is this dangerous?

php - 如何防止 PHP 中的 SQL 注入(inject)?

PHP 文件上传无法使用 $_FILES 变量,它始终是未定义的

linux - sudo -u postgres psql 和 sudo psql -U postgres 有什么区别?

PostgreSQL ODBC 驱动程序未显示在控制面板(数据源)中