首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这个SQL结构是否容易进行SQL注入?

这个SQL结构是否容易进行SQL注入?
EN

Stack Overflow用户
提问于 2021-12-05 23:28:47
回答 1查看 60关注 0票数 -3

备注:对于示例(Oracle、Server、MySQL、Postgres)来说,任何SQL后端都是可以的,不过对于我的示例,我将使用MySQL进行测试。

我想知道下面的构造是否容易使用SQL注入:

代码语言:javascript
运行
复制
SELECT
    field1,
    field2,
    %s
FROM
    tbl

用户可以在那里输入一个原始字符串。我很好地允许错误的输入,但我想看看用户是否可以对此做任何有害的事情,只要我删除某些字符,如;。因此,如果用户试图执行:

代码语言:javascript
运行
复制
SQL % ('DROP TABLE users; ')

SQL只会变成无效的sql,但不一定是恶意的:

代码语言:javascript
运行
复制
SELECT
    field1,
    field2,
    DROP TABLE users
FROM
    tbl

但是,如果有一个天才用户能够在这里组合任何字符串,那么上面的代码对恶意SQL注入是否安全?如果没有,那么这里的示例字符串会被用来这样做吗?

EN

回答 1

Stack Overflow用户

发布于 2021-12-05 23:37:37

对于您的情况,解决方案是永远不要用来自后端层外部的字符串来组装SQL语句。因此,使用存储在后端中的字符串执行此操作。

例如,如果用户可以在UI中选择20列,则从1到20接收一个数字,然后您可以创建一个IF/ELSE序列,该序列将为每个数字追加相应的列。

这样,来自外部的参数就不会在SQL语句中组装,而是将用于组装SQL查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70239459

复制
相关文章

相似问题

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