gpt4 book ai didi

security - 用反斜杠引号替换所有引号——这样就足够了吗?

转载 作者:行者123 更新时间:2023-12-02 08:01:01 26 4
gpt4 key购买 nike

根据同事的建议,我正在使用 replaceAll 将单引号替换为 "\\\\'",但我很确定这不足以防止所有 SQL 注入(inject)。

我做了一些谷歌搜索,发现了这个:http://wiki.postgresql.org/wiki/8.1.4_et._al._Security_Release_Technical_Info

这对 PostgreSQL 进行了解释,但是替换是否不适用于所有 SQL 管理器? (例如,MySQL?)

另外,我想我理解我链接的解释如何适用于单个反斜杠,但它是否扩展到我使用四个反斜杠的情况?

请注意,我对数据库及其如何解析输入不太熟悉,但这是我了解更多信息的机会!任何见解将不胜感激。

编辑:我得到了一些非常有用的答案。我的下一个问题是,什么样的输入会破坏我的实现?也就是说,如果您给我输入,并且我在所有单引号前面加上四个反斜杠,您会给我什么样的输入来注入(inject) SQL 代码?虽然我确信我的方法是幼稚且错误的,但也许一些例子会更好地告诉我,针对我的“预防”注入(inject) SQL 是多么容易。

最佳答案

不,因为反斜杠怎么样?例如,如果您将 ' 转换为 \' 那么输入 \' 将变为 \\' 这是未转义的单引号和“字 rune 字”反斜杠。对于 mysql,每个平台都应该存在 mysql_real_escape_string(),因为它位于 MySQL 库绑定(bind)中。

但是还有一个问题。也就是说,如果数据段周围没有引号。在 PHP 中,这看起来像:$query="select * from user where id=".$_GET[id];

PoC 漏洞利用非常简单:http://localhost/vuln.php?id=sleep(10)

即使你执行mysql_real_escape_string($_GET[id]),它仍然容易受到sqli的攻击,因为攻击者不必打破顺序引号执行sql。最好的解决方案是参数化查询。

关于security - 用反斜杠引号替换所有引号——这样就足够了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5174768/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com