我刚刚读了一篇关于 php 挂在某些浮点数上的有趣文章,请参阅登记册 http://www.theregister.co.uk/2011/01/04/weird_php_dos_vuln/ and 探索二进制 http://www.exploringbinary.com/php-hangs-on-numeric-value-2-2250738585072011e-308/.
我从不明确使用浮动,我使用number_format()
清理我的输入并显示例如价格。
另外,据我所知,来自例如表单的所有输入都是字符串,直到我告诉他们否则,所以我认为这个问题不会影响我。
我是对的吗,或者我是否需要检查我的服务器上的 WordPress 和 Squirrelmail 安装,看看它们是否将任何内容投射到浮动?或更好,grep
我的服务器上的所有 php 文件float
?
缓解问题的方法:
- 使用现代 CPU。大多数现代 64 位 CPU 都不会受到影响(实际上我很难找到允许重现它的主机,因为它们倾向于使用更现代的硬件)。亚马逊虚拟机似乎也能免疫。
- 升级您的 PHP 版本 - 5.3.5 和 5.2.17 一旦发布(可能是今天)就包含修复程序。
- 构建与
-ffloat-store
在 CFLAGS 中(会减慢代码速度)。
- 手动应用到您的代码并重建 PHP。
寻找有的代码float
可能不会有帮助zend_strtod
引擎在许多字符串->数字转换场景中使用。
附:顺便说一句,这段代码是标准 BSD 库strtod
代码,不是 PHP 独有的。因此使用此代码的其他项目也可能会受到影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)