<分区>
我注意到函数 json_encode()
自动将反斜杠放在 "
和 '
值上。我最初是通过使用 来防止 SQL 注入(inject)的code>mysqli_real_escape_string($con, $value)
将字符串放入数组之前,然后使用jSON对其进行编码。
因为json_encode
添加了额外的反斜杠,所以需要使用mysqli_real_escape_string
函数吗?
<分区>
我注意到函数 json_encode()
自动将反斜杠放在 "
和 '
值上。我最初是通过使用 来防止 SQL 注入(inject)的code>mysqli_real_escape_string($con, $value)
将字符串放入数组之前,然后使用jSON对其进行编码。
因为json_encode
添加了额外的反斜杠,所以需要使用mysqli_real_escape_string
函数吗?
最佳答案
是的,还是有必要的。 json_encode
将反斜杠添加到 JSON 中包含的字符串,但不添加到 JSON 本身的控制元素。
所以,这个:
array( 'key' => 'some "value" here' );
变成:
{"key": "some \"value\" here"}
字符串中还有引号没有转义(键和值两边的引号。json_encode
不是为了防止SQL注入(inject)。它添加斜杠纯粹是为了JSON,所以稍后,当您 json_decode()
数据时,它知道字符串的开始和结束位置。
正如其他人所说 - 使用准备好的语句。时期。如果您已经在使用 mysqli,您没有理由不这样做。
关于php - json_encode() 是否可以防止 SQL 注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15325558/