【发布时间】:2023-03-24 00:47:01
【问题描述】:
在我尝试传递 WHERE 语句之前,我的 RESTful 界面工作正常
例子:
通过的周长:
SELECT = "this";
FROM = "that";
WHERE = " 'ID' = 332";
网址可能如下所示
www.example.com/rest.php?SELECT=this&FROM=that&WHERE='ID'=332
然后在我的 php 脚本中
if (isset($_GET['SELECT']))
{
$SELECT = $_GET['SELECT'];
}
if (isset($_GET['FROM']))
{
$FROM = $_GET['FROM'];
}
if (isset($_GET['WHERE']))
{
$WHERE = $_GET['WHERE'];
}
所以我认为 WHERE 语句中的等号搞砸了。我在这个陈述中是否正确?
如果是这样,还有什么替代方案?
【问题讨论】:
-
php.net/rawurlencode - 所有内容您输入的网址都应该正确编码
-
将 SQL 作为参数传递似乎是错误的解决方案,并且让自己面临 SQL 注入或意外的非常重的查询。不能不传具体参数,自己在服务器上建SQL吗?
-
让一切都通过一个
rest.php和参数的 SQL 查询部分几乎是 not RESTful 的缩影。 -
你需要先了解一下 SQL 注入,然后才能声称它不易受到攻击。我所要做的就是发送
WHEREof'ID' = 332; DELETE * FROM table; -
如果你想让 WHERE =
'ID' = 332这样的东西起作用,你不可能基于所问的问题。'ID'周围的引号将被转义。
标签: php database rest restful-url