转义数据的最佳方式 JS->PHP->MySQL 反之亦然

发布于 2024-10-19 16:16:23 字数 724 浏览 4 评论 0原文

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

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

类似于下图:

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

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

what functions i have to use to encode/decode/escape/stripslash data for following purposes?

  1. when calling a PHP script from JS like: page.php?data=don't_use_#_and_%_in_URL_params
  2. when a PHP script receive a parameter from JS like: don%27t_use_%23_and_%25_in_URL_params
  3. when running a MySQL query from PHP with data previously received from JS to prevent MySQL injections (lets say i need to insert in database the following sequence of characters: "``')
  4. when i need to compare in a MySQL statement a field value which contains "``' sequence with an expression
  5. when i need to retrieve a field value from a MySQL table and the field contains "``' and i want to use it in a PHP eval() macrosubstitution
  6. when i have to send data from PHP to JS in an AJAX response and it contains "``' characters
  7. and finally i have to eval() previous respond in JS

something like this diagram:

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

if anyone have the time and pleasure to answer, or to correct me if i made any mistakes here, thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

呆头 2024-10-26 16:16:23
  1. encodeURIComponent
  2. $_GET
  3. PDO 绑定参数
  4. 数据库中的 PDO 绑定参数。否则它只是 PHP 中的一个字符串
  5. 不知道。您确实应该为您遇到的每个问题提出一个问题。不过,eval 的味道很糟糕。
  6. 选择一种数据格式并为此使用适当的编码。 JSON 很常见。
  7. 唯一应该使用 eval() 是 JS 的时候是当您在没有本机版本的浏览器中实现对 json 的支持时(并且您可以使用 Crockford 的 json2.js为此)。所以不要。
  1. encodeURIComponent
  2. $_GET
  3. PDO bound parameters
  4. PDO bound parameters in a database. Otherwise it is just a string in PHP
  5. No idea. You really should have asked a Question for each question you have. eval smells bad though.
  6. Pick a data format and use appropriate encoding for that. JSON is common.
  7. The only time you should go near eval() is JS is when you are implementing a support for json in browsers without a native version (and you can use Crockford's json2.js for that). So don't.
山有枢 2024-10-26 16:16:23
  1. escape()
  2. 无需执行任何操作。
    3-4.数据源在这里并不重要。构建查询有一些通用规则,我相信您已经知道了。如果没有 - 请参阅 完整的解释
  3. 永远不要这样做。这是您的应用程序中一个摩天大楼大小的洞。你没看到吗?
  4. json_encode()
  5. 评估?你确定吗?为什么不在 JS 中已经存在所有代码的情况下才发送数据?
  1. escape()
  2. No action required.
    3-4. Data source doesn't matter here. there are common rules for building the query, I am sure you know it all already. If not - refer to this complete explanation.
  3. NEVER do it. It's a hole of a skyscraper size in your application. Don't you see it?
  4. json_encode()
  5. eval? are you sure? why not to send data only while all codes already present in JS?
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文