javascript - 阻止本地 PHP/HTML 文件预览在服务器上执行 javascript

标签 javascript php ajax security matomo

我有一些 HTML/PHP 页面,其中包含 javascript 调用
这些调用点包含在 (PIWIK) 中的 JS/PHP 方法存储在远程服务器上。
它们是使用 http://www.domainname.com/ 触发的前缀指向正确的文件。

我无法修改库的源代码。

当我自己的 HTML/PHP 页面在浏览器中本地预览时,我的意思是使用 c:\xxxx 类路径,而不是 localhost://xxxx 路径,远程脚本是打电话并执行他们的流程

我不希望发生这种情况,只允许从 www.domainname.com 页面调用这些脚本时执行

你能帮我确保这个安全吗?

人们肯定可以在浏览真实网站时直接绕过此安全性,使用某些浏览器插件即时修改网页,但实现起来有点困难。

我打开了一个 issue到 PIWIK 问题跟踪器,但我想尽快保护我的网站和相应的统计数据,等待 Piwik 的进一步更新。

<小时/>

编辑

<小时/>

我想要实现的流程是:

  • 有人从 www.domainname.com 以外的任何地方打开页面
  • >该页面调用远程服务器上的JS方法(也可以不调用,可能复制到本地),
  • > 该脚本调用远程服务器上的 php 脚本
  • > PHP 脚本说“嘿,你从哪里调用我,见鬼去吧!”。或者 PHP 脚本不执行......

我尝试使用 .htaccess 来实现这一点,但由于任何 JS 脚本都必须位于客户端上,因此它也会阻止来自 www.domainname.com 的合法调用

最佳答案

未经测试,但我认为你可以使用 php_sapi_name()PHP_SAPI 常量来检测 PHP 正在使用的接口(interface),并执行相应的逻辑。

不想听起来厚颜无耻,但你的情况听起来相当可怕,我建议搜索一些有关安全性的 PHP 配置最佳实践;)

问题修改两次后编辑:

现在问题更加清楚了。但如果 JavaScript 和 PHP 不在同一服务器上,您将很难确保这一点。

如果它们不在同一服务器上,您将依赖可伪造的 HTTP header (例如 RefererOrigin header )。

但是PIWIK already tracks the referer (“Piwik 使用第一方 cookie 来跟踪某些信息(访问次数、原始引荐来源网址和唯一访问者 ID)”,以便您可以折扣来自无效引荐来源网址的点击。

如果这还不够,确保对 Web 服务的请求来自经过验证的源的标准方法是使用标准 Cross-Site Request Forgery预防技术——CSRF“ token ”,有时也称为“crumb”或“nonce”,并且由于这是分析软件,如果 PIWIK 还没有这样做,如果他们的架构可以的话,我会感到惊讶。我会问他们。

现在大多数 Web 框架都有 CSRF token 生成器和 API,您应该能够使用它们,制作自己的 token 并不难,但是如果您无法修改 JS,那么在传递 token 时就会遇到问题。同样,PIWIK JS API 可能具有传递 session ID 和类似数据的方法。

关于javascript - 阻止本地 PHP/HTML 文件预览在服务器上执行 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24799934/

相关文章:

javascript - 如何从异步调用返回响应?

php - 使用 PHP,如何搜索 Gmail 的存档电子邮件

php - 使用 javascript 获取最后添加的字段数

php - 工艺计算器循环

php - 使用 php mysql ajax 动态更新选择框

javascript - 需要帮助理解一个简短的 JavaScript 脚本

javascript - 如果我使用另一个域名来为我的 JavaScript 提供服务,并且该 JavaScript 设置了一个 cookie,那算作第三方 cookie 吗?

javascript - 如何克服NodeJS堆内存错误?

javascript - 将 keydown 事件仅限于字符

javascript - Ajax失败但消息已发送