所以我试图创建一个加密应用程序,我遇到了一个基本问题。使用以下功能对它们进行过滤/消毒:
strip_tags()
和addslashes()
然后使用OpenSSL使用AES-256-CBC加密。所以这个:
My encrypted shopping list:
- Milk
- Eggs
- Beans
Don't forget the receipt.
工作得很好,虽然它显然逃脱了单引号。因此,我得到了Don\'t
,因为它会破坏用户体验。但是,只要我带走addslashes()
,openssl_decrypt()
函数就会返回false。
有什么想法吗?
答案 0 :(得分:0)
是的,我的建议很简单:不要逃避/消毒输入。这正是为什么在较新版本的PHP中禁用魔术引号的原因。
在99.99%的情况下,if you need to prevent SQL injection, use prepared statements。
但是,只要我拿走了addslashes(),openssl_decrypt()函数就会返回false。
这听起来很奇怪。您可以在3v4l.org上发布带有假密钥的片段并在此处分享链接吗?