php - 我找到了一个 $_GET ['var' ] == 一个 SQL 语句 - 有什么风险?

标签 php mysql get code-injection

我发现一些为网站编写的旧代码(2009 年)确实在某些情况下将搜索查询的 SQL 保存为 $_GET 变量!

执行搜索时,将发布详细信息,然后对其进行清理,并使用 MySQL 中的 LIMIT 子句对结果进行分页。如果有多个页面(即 +30 个结果),则页面是 HTML 中的 anchor 链接,带有包含 SQL 语句的 GET 变量。

我知道,这绝对不是这样做的方法。这是我偶然看到的旧代码。这需要修复。

所以我已经修复它,清理它并使用替代方法重新加载 SQL,但是:

我的问题是:

页面输出与缩略图相关的数据,所有数据都输出为命名数组var(原始子句是SELECT *子句),所以如果有人滥用GET变量,页面本身只会输出名为

的列

我已经设法使用 GET 滥用从数据库中删除了行,我想这种滥用只有在结果不涉及任何返回的输出(例如 DELETE)时才有效,但我不知道;因此,假设用户可以在 GET 子句中输入任何内容,但只能获得编码内容的显示输出(即 30 行数组中的命名列)——这个大洞还有哪些其他滥用行为?

进一步的细节:代码是MySQLi

最佳答案

类似SQLMAP 的工具可能会接管整个服务器并根据用户的需要对其进行处理。

拥有未经处理的数据库输入甚至不再是黑客攻击,它等待某人在您的机器上运行脚本并从那时起基本上拥有它。

关于php - 我找到了一个 $_GET ['var' ] == 一个 SQL 语句 - 有什么风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27315635/

相关文章:

Python 网址参数

java - JSoup 登录网站

javascript - Flask GET 请求未加载页面

php - 使用 php 将 XML 嵌套到 MySQL 表

c# - 使用linq连接来自不同服务器的两个表

MySQL设置最大值为9999

php - 类(class)完成时更新外部数据库

php - 获取 <select> 中 <option> 的内容而不是值

php - 在 mysql 中插入一个 PHP false

php mysql adodb