一尘不染

mysql_real_escape_string可以单独阻止各种SQL注入吗?

mysql

可能重复:

绕过mysql_real_escape_string()的SQL注入

我还没有看到任何评价或没有过时的信息。因此,存在一个问题:mysql_real_escape_string()是否完全可以防止SQL注入?但是它已经非常过时了(它从‘09开始),所以从‘12的php 5.3和mysql 5.5开始,它是否可以完全保护?


阅读 337

收藏
2020-05-17

共1个答案

一尘不染

mysql_real_escape_string ALONE不能阻止 任何事情。

而且, 此功能与注射完全无关。

每当需要转义时,尽管有“安全性”,但仍需要转义,只是因为 SQL语法要求 转义 而且在您不需要的地方,转义也不会帮助您。

此函数的用法很简单:当您必须在查询中使用 带引号的字符串
时,必须转义其内容。不是因为某些虚构的“恶意用户”,而是只是为了逃避这些用于分隔字符串的引号。这是非常简单的规则,但PHP人士却非常误解。

这只是语法相关的功能,而不是安全性。

取决于此功能在安全方面的重要性,相信它将“保护数据库免受恶意用户的攻击” 导致您被注入。

您可以得出的结论:
不,此功能还不够

准备好的声明 也不是万灵药。
它只在可能的情况下覆盖您的背部。有关详细信息,请参见我对著名问题所做重要补充

2020-05-17