从ajax / javascript滥用中保护php代码

时间:2011-10-20 13:46:48

标签: php ajax security

我正在设计一个网站,我真的希望它尽可能安全。 我有一个无法访问的私人文件夹(.htaccess),其中包含我所有的PHP类(和类似的结构),以及一个公共文件夹,其中包含我的Javascript,CSS和一个用于Javascript(通过AJAX)与之交互的PHP文件,然后访问私人文件夹中的类。

现在这是我的问题,对于我的生活,我似乎无法理解这一点:

如果有人要查看js代码,他们会看到命令/数据被发送到公共可用的PHP脚本(如上所述),因此了解使用哪些命令与该脚本接口并可能获得访问权限存储数据等。

现在我知道ajax不会远程工作等等但是只要你从ajax脚本获得命令就可以直接与它进行交互,所以我想我会在接口脚本上做一个引用来检查,直到我工作完美意识到欺骗你的引用者标题是多么容易!

有没有人对如何确保这一点有任何想法。如果这听起来像完全垃​​圾告诉我,我会尝试进一步分解它。

6 个答案:

答案 0 :(得分:2)

AJAX和JS是基于客户端的 - 他们所做的一切,任何用户都可以做到。如果将API方法暴露给AJAX,则将其暴露给用户 - 您无能为力。这是你的设计选择。你当然可以模糊你的API调用,但除了使它不那么用户友好之外,它实际上没有做任何事情。

底线:不要相信任何用户输入,无论它是来自您的AJAX代码还是其他地方。

答案 1 :(得分:1)

嗯,有人直接编写您网站的脚本只能访问他已经可以在UI中使用的相同内容,对吧?

如果您有一个脚本函数doAdminStuff(),那么在采取任何操作之前,如果用户已登录并且是管理员,您将检查服务器端

答案 2 :(得分:1)

放松,伙计 这是 SPARTA! WEB 世界上的每个网站都像这样“暴露”。这就是网络的工作方式,Ajax或非基于ajax 你无能为力,但这并没有什么害处。没有什么可以保障的。

答案 3 :(得分:0)

不要偏执,只是过滤输入参数,也许你应该打开SSL,这样你的ajax请求内容就很难嗅到等等。

答案 4 :(得分:0)

您是否仅出于安全原因或任何其他原因使用ajax-thing?因为您可以构建这样的体系结构(PHP文件作为“网关”和访问受限文件夹中的所有其他PHP文件),而不使用ajax。如果要查看,可以查看Zend Framework的默认文件夹结构。这种结构的优点是根本没有可见的用户逻辑。

同样重要的是IE(我认为至少是IE 6和7)默认情况下根本不发送推荐人,所以这可能无论如何都不会起作用。

答案 5 :(得分:0)

以下是我的建议:

  1. 如果您尚未使用SSL,请使用SSL。

  2. 对要保护的所有请求使用a (software) token

  3. 为了阻止他人阅读您的javascript文件,您可以obfuscate他们。 Dean Edward's packer是一个着名的。

  4. 编写一个脚本来嗅探日志和数据以查找可能存在的错误活动。如果您没有记录所需的所有活动(例如,如果apache日志不够),请考虑将活动写入您自己的日志。