【问题标题】:best way to escape data JS->PHP->MySQL and vice versa转义数据 JS->PHP->MySQL 的最佳方法,反之亦然
【发布时间】:2011-07-05 15:41:49
【问题描述】:

为了以下目的,我必须使用哪些函数来编码/解码/转义/stripslash 数据?

  1. 当从 JS 调用 PHP 脚本时,例如:page.php?data=don't_use_#_and_%_in_URL_params
  2. 当 PHP 脚本接收到来自 JS 的参数时,例如:don%27t_use_%23_and_%25_in_URL_params
  3. 从 PHP 运行 MySQL 查询时,使用以前从 JS 接收的数据以防止 MySQL 注入(假设我需要在数据库中插入以下字符序列:"``'
  4. 当我需要在 MySQL 语句中比较包含 "``' 序列和表达式的字段值时
  5. 当我需要从 MySQL 表中检索字段值并且该字段包含 "``' 并且我想在 PHP eval() 宏替换中使用它时
  6. 当我必须在 AJAX 响应中将数据从 PHP 发送到 JS 并且它包含 "``' 字符时
  7. 最后我必须在 JS 中 eval() 之前的响应

类似这样的图表:

JS(encode) --> (decode)PHP(encode) --> (decode?)MySQL(encode?) --> (decode)MySQL(encode) --> (decode)JS

如果有人有时间和乐于回答,或者如果我在这里犯了任何错误,请纠正我,提前感谢

【问题讨论】:

    标签: php javascript mysql escaping encode


    【解决方案1】:
    1. 转义()
    2. 无需任何操作。 3-4。数据源在这里无关紧要。构建查询有一些通用规则,我相信你已经知道了。如果没有 - 请参阅 this complete explanation
    3. 永远不要这样做。在您的应用程序中,这是一个摩天大楼大小的洞。你没看到吗?
    4. json_encode()
    5. 评估?你确定吗?为什么不在 JS 中已经存在所有代码时才发送数据?

    【讨论】:

      【解决方案2】:
      1. encodeURIComponent
      2. $_GET
      3. PDO bound parameters
      4. PDO bound parameters 在数据库中。否则它只是 PHP 中的一个字符串
      5. 不知道。你真的应该为每一个问题问一个问题。 eval 不过闻起来很臭。
      6. 选择一种数据格式并为此使用适当的编码。 JSON 很常见。
      7. 您唯一应该接近eval() 是JS 是当您在没有本机版本的浏览器中实现对json 的支持时(您可以为此使用Crockford 的json2.js)。所以不要。

      【讨论】:

      • 2. $_GET 永远不会将我的 JS 编码字符串 "don%27t_use_%23_and_%25_in_URL_params" 转换为我期望在 $_GET["data"] 中收到的 "don't_use_#_and_%_in_URL_params"
      • 会的。 PHP 在填充 $_GET 时对 URL 编码数据执行正确的操作。
      猜你喜欢
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多