gpt4 book ai didi

php - urlencode() 是否足以阻止 2011 年的所有 SQL 注入(inject)攻击

转载 作者:可可西里 更新时间:2023-11-01 06:54:08 24 4
gpt4 key购买 nike

我正在将一些简单的用户数据传递到 mysql 数据库中。

PHP 的 urlencode() 返回一个字符串,其中包含除 -_ 之外的所有非字母数字字符。已替换为百分号 (%) 后跟两个十六进制数字。

我不担心空格变成加号或其他格式问题。我也不担心 XSS 和其他 HTML 黑客攻击。

我相信我应该免受 ' 和 ) 风格的攻击。<​​/p>

问题:是否有其他类型的 sql 攻击可以与 - 或 _ 或 . ?

示例:

mysql_query("UPDATE cars SET color = '".urlencode($c)."' WHERE garage = 29");

提前谢谢你

最佳答案

urlencode() 与 SQL 无关,因此它在防止 SQL 注入(inject)方面的作用与煤油在使您的汉堡更美味方面的作用一样大。此外,进入数据库的所有内容都将以 URL 编码结束,如果您想在检索数据库后对它们执行任何有用的操作,则必须对其进行解码。

另一方面,转义您的查询可以帮助您的应用程序防止 SQL 注入(inject),仅此而已。它不会修改您在查询中输入的数据;它只是保护您的查询不被篡改。这就是 SQL 注入(inject)的概念,这也是为什么对数据进行 URL 编码并没有采取任何措施来防止它的原因。当然,它确实将您的撇号 ' 转换为 %27,使它们无害,但如上段所述,您必须URL 将它们解码回撇号以便使用它们。

为正确的目的使用正确的工具。尤其是在 2011 年,您应该使用准备好的语句,而不是手动转义您的查询变量并连接字符串以形成查询。

关于php - urlencode() 是否足以阻止 2011 年的所有 SQL 注入(inject)攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4999884/

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