逃避数据的最佳方式JS-> PHP-> MySQL,反之亦然

时间:2011-02-28 09:52:45

标签: php javascript mysql escaping encode

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

  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()macrosubstitution中使用它时
  6. 当我必须在AJAX响应中将数据从PHP发送到JS并且它包含"``'个字符
  7. 最后我必须使用eval()以前回复JS
  8. 类似这样的图表:

    JS(编码) - > (解码)PHP(编码) - > (解码?)MySQL(编码?) - > (解码)MySQL(编码) - > (解码)JS

    如果有人有时间和愉快的回答,或者如果我在这里犯了任何错误就纠正我,提前谢谢

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

  1. 逃逸()
  2. 无需任何操作。 3-4。数据源在这里无关紧要。有一些建立查询的通用规则,我相信你已经知道了。如果不是 - 请参阅this complete explanation
  3. 从不这样做。它是您应用程序中摩天大楼的一个洞。你不明白吗?
  4. json_encode()
  5. EVAL?你确定吗?为什么不在JS中已经存在所有代码的情况下发送数据?