我是否需要转义每个字符串以及转义字符串的最大长度是多少


Do I need to escape every string and what is the maximum length of an escaped string?

我试图用SQL在我的数据库中存储随机生成的盐。我在php中使用这行代码生成了这个salt:

$salt = mysqli_real_escape_string($this->connection, mcrypt_create_iv(256, MCRYPT_DEV_URANDOM));

正如我所理解的,所有字符串都必须转义,无论它们是否来自用户输入,因为我的随机盐也可能具有干扰SQL的特殊字符,无论它们是否故意恶意?正如我所理解的,要转义字符串PHP需要添加额外的字符,从而增加字符串的长度。我想知道字符串的最大长度是什么后转义?是否每一个侵权字符只增加一个字符,因此256个字符的字符串的最大长度是512 ?

谢谢

不要逃避。使用绑定参数代替。

除此之外,计算的大小是未转义的值。转义只是为了使解析器能够安全地读取字符串。实际的字符串值仍然是相同的大小(并且将由MySQL引擎以未转义的形式处理)。转义只是在查询中安全地嵌入值的一种方法。