php - 加密 Ajax 数据的最佳且最安全的方法是什么?

标签 php javascript jquery ajax security

我正在开发一个网站,人们可以通过 Ajax(由 jQuery 提供支持)注册和访问不同的数据。这一切都很简单,我做起来不会有任何问题。问题是 Ajax 显示的数据需要安全,并且不能通过远程脚本进行解析。我可以通过 AES(在 PHP 中)加密数据并在 javascript 中成功解密,但 javascript 代码始终对每个人都可见(登录后)。我可以使用混淆器和 JavaScript 加密,但这两种方式,即使混合使用,也不够安全和可解密。我宁愿避免 SSL 连接,因为我试图阻止注册用户访问信息,而 SSL 连接只会阻止未注册用户访问数据。

注册用户将能够赚钱,因此对欺骗代码非常感兴趣,这就是为什么它必须是防弹的。

不幸的是系统肯定需要Ajax(整个工作原理需要基于Ajax)。理想的解决方案是将加密 key 保存在可由 php 保存并由 javascript 访问的位置,但不能由用户、远程脚本解析器等访问。

有谁知道为此目的创建安全 Ajax 连接的方法吗?

我非常感谢您的所有帮助。

最佳答案

你想要浏览器不做的事情。

您要求:“理想的解决方案是将加密 key 保存在可由 php 保存并由 javascript 访问的位置,但不能由用户、远程脚本解析器等访问。”

网络浏览器和浏览器中的 JavaScript 引擎的设计是这样的:网络浏览器可以执行的任何 JavaScript 都可以被想要查看、窃取、借用等等的人看到。时期。没有这样的地方可以被Javascript访问,但不能被用户或远程脚本解析器访问。如果这是一个问题,您将不得不重新考虑您的应用程序的工作原理。最有可能的是,您需要将 secret 内容保存在服务器上,并在服务器上做更多的工作,在客户端上做更少的工作,以保护您想要保护的内容。如果你想一想,浏览器只是一个远程脚本解析器,所以如果你阻止远程脚本解析,你就阻止了浏览器。如果您允许浏览器,那么您就允许远程脚本解析器。

如果你愿意的话,你可以根据自己的喜好来混淆你的Javascript。这将使人类理解它并用它做一些有用的事情变得更加困难,但这只是一个额外的障碍,任何有决心和有能力的人如果真的愿意的话都可以克服。如果这种保密性对您来说确实很重要,那么您需要重新考虑应用程序的设计,以便浏览器中不需要 secret 信息,而浏览器仅充当显示和交互引擎。

这样我就清楚了。根据定义,任何可由浏览器执行的代码都必须是任何用户或任何工具都可以下载和检查的代码。您可以使用 SSL 来保护数据免受传输中的窥探者的侵害,但它最终必须能够以 Javascript 形式被浏览器读取,以便浏览器能够执行它。

关于php - 加密 Ajax 数据的最佳且最安全的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6803565/

相关文章:

php - 在 MySql 数据库表中插入日期?

php - 即使付款已发送,PayPal IPN 仍返回 INVALID

php - 在 HTML 中显示网页的当前 URL(动态)

javascript - 使用带有无限滚动的 ajax 的性能

jquery - 获取动态id以在jquery ajax中显示信息

php - 升级到 php 8.1 现在获取 "PHP Deprecated: addslashes()"

javascript - 出现 Facebook 对话框但始终显示 "An error has occurred"

javascript - 如何在模板中使用返回值的函数? View , View

javascript - ie9 上此 css3 动画的 jQuery 回退

javascript - 如何使用jquery设置按钮的title属性