mysql - 将限制 GET 参数直接传递给 MySQL 安全问题?

标签 mysql security limit dos

我想知道拥有类似于以下的 URL 是否存在安全风险

http://www.mytestapp.com/results?limit=1234

limit GET 参数随后将被检查为有效整数并直接传递到查询中。

如果用户将此参数更改为非常大的数字会发生什么情况?对于一个巨大的数据库,这会导致类似于拒绝服务的效果吗?

设置可变结果限制的最佳做法是什么?

最佳答案

不要只是将 GET 变量直接传递到您的查询中。如果你这样做了,那么我可以像这样进行 SQL 注入(inject):

http://www.mytestapp.com/results?limit=1%3BDROP%20TABLE%20USERS

你的查询最终会是这样的:

select * from some_table where parameter = 3 limit 1;DROP TABLE USERS

我假设您正在尝试进行分页。如果是这样,你会想要这样的东西:

http://www.mytestapp.com/results?page=1&size=10

然后,在您的后端,验证 pagesize 都是整数,并且都是合理的大小。也许对 size 的大小设置限制,例如,可能只是 10 到 100 的倍数。

关于mysql - 将限制 GET 参数直接传递给 MySQL 安全问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9724548/

相关文章:

php - 将十进制值更新为错误值的mysql

ios - 如何从 Objective C 中的文件创建私钥?

java - 修改 Java Applet 的变量

javascript - 如何在 base64 中编码我的实例 ID

mysql - 限制 Crystal Reports 从数据库中提取的记录数量

firebase - Firestore每小时或每天限制读取和写入,以防止用户在检查器中设置计时器

.net - 带有 .Net 应用程序的 MySql 或 MS Sql Server

php - 如何从此函数返回正确的变量?

sql - 我该如何优化这个查询?

python - 使用 python 在大型 .csv 文件中查找行数