-1

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

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

4

4 回答 4

5

两者都不。

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

  • 首先,您必须区分 SQL 查询和数据库。后者根本不需要数据转换。
  • 接下来,您必须为 SQL 查询正确格式化数据。不要“逃避”它。
  • 最后,由于格式化规则如此复杂以至于普通 PHP 用户无法理解,他应该使用准备好的语句来代替,因为后者将为他正确地格式化数据。
于 2013-09-13T15:09:52.730 回答
0

如果您打算执行客户端加密作为保护通信客户端与应用程序通信的一种手段,您可能会发现 HTTPS / SSL 加密是比自己进行加密更可取的选择。手动加密和解密为应用程序的通信引入了另一个设计复杂性元素,这可能很容易绕过,具体取决于它的设计方式。

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

于 2013-09-13T15:11:47.670 回答
0

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

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

于 2013-09-13T15:12:20.993 回答
-1

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

于 2013-09-13T15:02:46.560 回答