Javascript:允许在封闭源CMS中自定义javascript是不是很糟糕?

时间:2014-01-30 18:31:59

标签: javascript jquery

我不知道有很多javascript的功能和能力。我开发了一个自定义的闭源CMS,我正在考虑添加一个功能,以允许自定义的javascript包含在他们网站的每个页面上(但不包括后端系统本身)。我很好奇这样做的风险? CMS是使用PHP构建的,并且在这个CMS的后端系统中有javascript,但这就是它。

如果我允许自定义javascript,是否可以操纵它来检索所有php代码,或者导致服务器本身出现问题?

我拥有服务器,因此我可以进行任何必要的调整以保护服务器。

同样,这纯粹是为了获取信息,我很欣赏人们可以给我的任何建议。

javascript将存储在一个文件中,并在页面本身使用php包含。我确实有阻止内部任何内容的代码,以防止在代码本身中使用PHP。

2 个答案:

答案 0 :(得分:4)

他们可以用JavaScript窃取我的闭源PHP代码吗?

要回答您的第一个问题 ,只需上传JavaScript代码段,您的CMS软件用户就不会盗取您的闭源PHP代码。

这是因为JavaScript在客户端(Web浏览器)上运行。

如果JavaScript能够从客户端访问您的PHP代码,那么他们就可以在没有JavaScript的情况下访问它。这意味着您在Web服务器端配置了错误,例如设置文件权限以便任何人都可以查看它们。


允许CMS用户上传JavaScript是个好主意吗?

你会得到一些人会尖叫绝对不在任何情况下。这些人都是这样说的人:

  • 使用eval()始终是 evil 。它并不总是邪恶的,但几乎总是没有必要。
  • 在PHP中使用global$_GLOBALS evil 。再说一次,如果你不知道自己在做什么,那就是邪恶的。而且,它几乎总是没必要。

您应该将其视为 警告 。不要轻易对待这个问题,如果你小心,你可以做到,但如果你不这样做,它真的可以咬你的**。这足以让大多数人远离它。

在您确定是否应该允许CMS解决方案的用户上传JavaScript代码段之前,您应该问自己以下问题:

谁将被允许上传JavaScript代码段?

如果只有能够访问上传JavaScript模块的此功能的人才是受信任的系统管理员,那么您应该将其视为安全。我把它用斜体字表示,因为它不是很安全,但它确实落在这些可信用户身上,以确保他们不会上传恶意内容。

也许你会得到Mary Neophyte,网站管理员(业余)非凡的人,她决定在她的CMS首页上显示一个很酷的小脚本,显示阿拉斯加州安克雷奇的当前天气。她去了谷歌,输入“JavaScript天气脚本”,然后到达天气频道。她认为他们的实施太难以安装。她一直在寻找。她于http:/motherrussia.ru/ilovehackingidiots/weatherscript.html到达鲍里斯的天气脚本。

当她的CMS开始危及​​最终用户时,

这不是您的错误 。她是值得信赖的管理员,他故意上传恶意脚本(虽然无知)。您不应对此类行为负责。

简而言之,您应该能够信任 CMS的受信任用户负责任地了解他们上传的内容。如果他们在脚下射击,那不在你身上。


允许不受信任的用户上传JavaScript

这绝对,积极,毫无疑问绝不是你应该做的事情。您无法屏蔽某人可能上传的所有可能的混淆。

我甚至不打算进一步深入研究这个问题。不要这样做。周期。


关于HTML / CSS

不要认为恶意代码无法通过HTML / CSS进入您的网站。虽然HTML比JavaScript更容易清理,但它仍然可以被利用来向页面提供不需要的JavaScript。

如果您只允许受信任的用户上传HTML / CSS,那么请不要过于担心。我再次强调,如果她将Boris的天气脚本上传到她的网站,那就是Mary Neophyte的错。但是,不要让鲍里斯自己来到你的网站,并开始上传任何可以在网页上显示的内容给任何人,除了鲍里斯本人。


TL; DR

我会将所有内容概括为两个规则:

  1. 不允许不受信任的用户上传任何将显示给他们以外的任何人的内容。
  2. 不要让任何人上传任何在服务器端执行的内容。

答案 1 :(得分:1)

允许自定义JavaScript可能是一个非常坏主意。这将使您的站点容易受到跨站点脚本攻击,并允许它成为跨站点请求对其他站点进行伪造攻击的载体。