将float存储到先前作为字符串转义的数据库? - 安全吗?

时间:2013-12-02 10:41:28

标签: php mysql database pdo escaping

其他Q& Answers说如果你想要使用PDO转义并存储浮点数,你应该使用字符串转义...(PDO :: PARAM_STR)......

但是将FLOAT作为STRING从FLOAT转移到数据库(MySQL)的FLOAT列中是否真的安全且有效的方法?这两个花车是“兼容的”吗? 我应该预先验证PHP /或MySQL中的浮点数只会以某种方式将字符串转换为浮点数,即使它实际上不是浮点表示(但是一些随机字符串)?

1 个答案:

答案 0 :(得分:2)

在SQL注入方面做这样的事情是安全的:

$stmt->bindValue('foo', 1.23456, PDO::PARAM_STR);

因为这对任何值都是安全的,无论其类型如何。

想要在float MySQL列中存储字符串也是“安全的”。您不能在float列中存储除float之外的任何内容,MySQL会根据其投射规则将其收到的任何值强制转换为float。这可能会或可能不会触发某些错误或警告,但字符串→浮点转换非常简单,不应该导致任何问题。

就安全而言,这都是“安全的”。

如果你的浮动实际上是一个浮点数,它对值也是安全的。它只是作为一个字符串运输,但价值本身将被运输。使用floatstringfloat强制转换时,可能是微小的舍入错误,因为您总是需要考虑使用浮点数。

相关问题