首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从sql查询中的url获取id

从sql查询中的url获取id
EN

Stack Overflow用户
提问于 2018-06-08 13:47:29
回答 2查看 974关注 0票数 0

我有一个sql查询,以获取数据从数据库在php。我正在使用限制来限制数据。我需要根据url中的id限制数据。

如何在sql查询中调用id。我尝试了以下方法,但显示错误:

代码语言:javascript
复制
$response=mysqli_query($con,"select * from prometric ORDER BY RAND() LIMIT echo $_GET['id']; ");

错误是

分析错误:语法错误,意外的'‘(T_ENCAPSED_AND_WHITESPACE),应为'-’或标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING)在第14行

上的C:\xampp\htdocs\nurse\prometricajax.php中

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-08 20:40:53

更糟糕的是,如果你做得“正确”,你的应用程序中就会有一个SQL injection漏洞。

代码语言:javascript
复制
die('the following appears to work but is unsafe');
$response=mysqli_query($con,"select * from prometric ORDER BY RAND() LIMIT $_GET[id]; ");

我在上面已经死了,因为没有人应该使用这样的代码。

例如:被称为

代码语言:javascript
复制
https://you.example.com/thing.php?id=1%3btruncate+prometric%3bcommit

可以删除prometric表中的所有内容。

至少要这样做。

代码语言:javascript
复制
$response=mysqli_query($con,"select * from prometric ORDER BY RAND() LIMIT ".(0+$_GET['id']));

上面通过添加0来强制$_GET['id']为一个数字,这应该会阻止所有的注入攻击,最糟糕的是使用一个大的数字,并产生一个数字太大的错误,等等。

但可能需要更好的消毒。例如:将$_GET['id']复制到一个变量中,并检查是否在可接受的范围内,然后在SQL中使用它。

票数 2
EN

Stack Overflow用户

发布于 2018-06-08 20:41:37

你所拥有的非常非常接近。那里的额外回声和;是导致您出现问题的原因。试一试

代码语言:javascript
复制
$response=mysqli_query($con,"select * from prometric ORDER BY RAND() LIMIT " . $_GET['id']);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50768288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档