Php 加密Ajax数据的最佳和最安全的方法是什么?

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

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

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

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

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


我真的很感谢你的帮助。

你想要的东西是浏览器无法做到的

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

web浏览器和浏览器中javascript引擎的设计使得web浏览器可以执行的任何javascript都可以被想要查看、窃取、借用的人看到。时期没有这样的地方可以被Javascript访问,但不能被用户或远程脚本解析器访问。如果这是一个问题,你将不得不重新思考你的应用程序是如何工作的。最有可能的情况是,为了保护您想要保护的内容,您需要在服务器上保存机密内容,在服务器上做更多的工作,在客户端上做更少的工作。仔细想想,浏览器只是一个远程脚本解析器,所以如果你阻止远程脚本解析,你就阻止了浏览器。如果允许浏览器,则允许远程脚本解析器

如果您愿意,您可以将Javascript与您的核心内容混淆。这将使人类理解并利用它做一些有用的事情变得更加努力,但这只会是一个额外的障碍,任何有决心和有能力的人都可以克服,如果他们真的想克服的话。如果这种保密对你来说真的很重要,那么你需要重新考虑应用程序的设计,这样浏览器中就不需要保密信息,而浏览器只是一个显示和交互引擎


这样我就明白了。根据定义,可以由浏览器执行的任何代码都必须是任何用户或任何工具都可以下载和检查的代码。您可以使用SSL在传输过程中保护数据免受窥探者的攻击,但它最终必须是可读的Javascript,浏览器才能执行它。

您想要的是浏览器不能执行的东西

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

web浏览器和浏览器中javascript引擎的设计使得web浏览器可以执行的任何javascript都可以被想要查看、窃取、借用的人看到。时期没有这样的地方可以被Javascript访问,但不能被用户或远程脚本解析器访问。如果这是一个问题,你将不得不重新思考你的应用程序是如何工作的。最有可能的情况是,为了保护您想要保护的内容,您需要在服务器上保存机密内容,在服务器上做更多的工作,在客户端上做更少的工作。仔细想想,浏览器只是一个远程脚本解析器,所以如果你阻止远程脚本解析,你就阻止了浏览器。如果允许浏览器,则允许远程脚本解析器

如果您愿意,您可以将Javascript与您的核心内容混淆。这将使人类理解并利用它做一些有用的事情变得更加努力,但这只会是一个额外的障碍,任何有决心和有能力的人都可以克服,如果他们真的想克服的话。如果这种保密对你来说真的很重要,那么你需要重新考虑应用程序的设计,这样浏览器中就不需要保密信息,而浏览器只是一个显示和交互引擎


这样我就明白了。根据定义,可以由浏览器执行的任何代码都必须是任何用户或任何工具都可以下载和检查的代码。您可以使用SSL在传输过程中保护数据不受窥探者的攻击,但它最终必须是可读的Javascript,浏览器才能执行它。

身份验证是唯一的方法

只需让您的用户进行身份验证(登录),并向他们发送您用于加密其数据的随机种子和盐

没有种子/盐,即使恶意用户可以解密您的数据,它仍然是垃圾

如果您希望javascript使用一段数据,那么客户端将使用该数据

如果不想重复使用数据,请设置一个服务器端系统,其中每个数据块只有效一次

正确的身份验证应该解决所有这些问题

我希望用户只有在Ajax显示数据时才能看到数据


然后在ajax获得数据时加载数据,而不是在之前。或者仅部分加载数据并将任何敏感工作卸载到服务器。

身份验证是唯一的方法

只需让您的用户进行身份验证(登录),并向他们发送您用于加密其数据的随机种子和盐

没有种子/sal