php - json_encode() 是否可以防止 SQL 注入(inject)?

标签 php sql json sql-injection mysql-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/

相关文章:

javascript - 创建依赖下拉列表

mysql - 从 sql 数据库中选择最后一个条目

sql - 从 2 个字段中选择数据并仅使用 1 个值

php - json_encode 使用 Postgres 数据库和 php 返回 null

php - Fullcalendar 动态设置 minTime 和 maxTime

php - SQL 和不区分大小写的条件

php - 输入输入字段时的 CSS 光标线大小

sql - 创建 PostgreSQL 表 + 关系 - 关系问题 - 一对一

python - Flask - 自定义装饰器打破路由

javascript - JQuery getJSON 从函数返回对象数组?