加密 VS 已发布数据的转义


encryption VS escaping for Posted data?

我们可以使用加密(如base64和...)而不是对GET和POST数据使用real_escape_string吗?

我知道这会减慢应用程序的速度,但是安全性如何?

两者都不是。

这两个选项同样无用且容易出错。

  • 首先,您必须区分 SQL 查询和数据库。对于后者,您根本不需要数据转换。
  • 接下来,您必须为 SQL 查询正确格式化数据。 而不是"逃避"它。
  • 最后,由于格式化规则非常复杂,以至于普通PHP用户无法理解,他应该使用预准备语句,因为后者将为他正确格式化数据。

如果您打算执行客户端加密作为保护通信客户端到应用程序通信的一种手段,您可能会发现HTTPS/SSL加密是自己执行的可取选择。手动滚动加密和解密会给应用程序的通信带来另一个设计复杂性元素,根据其设计方式,这可能很容易规避。

编辑:加密数据不会消除注入攻击的风险,因为您需要在应用程序服务器上对其进行解码。一个聪明的攻击者可以简单地在传输之前捎带你的加密方法,注入他们喜欢的任何有效载荷。

首先,base 64 与加密无关:它是一种编码机制,允许将任意二进制数据编码为文本,并在必要时解码回来。

其次,使用预准备语句(或至少是带有绑定参数的 API),而不是 *_real_escape_string

任何人都可以

使用 base64 对自己的错误注入进行 base64 编码,所以这根本不是一个好主意。此外,对 6b4 编码数据的自定义盐进行逆向工程也相当容易,所以没有。