人们可以用 javascript 做什么?

What can people do with javascript includes?

我们正在与第 3 方交谈,希望将他们的一些数据包含在我们的网站上,他们想通过 iframe 来实现,出于响应速度的原因,我不喜欢它。

他们提供的其他选项是包含一个 javscript 文件,该文件将采用一个参数来了解将结果放入哪个 DOM 元素。

基本上,这使他们可以访问我们网站的 javascript 范围,如果他们愿意,可以在其中执行隐藏 dom 对象等操作。

我的问题是,是否有任何我必须考虑的安全事项?例如,他们能否在 javascript 中编写恶意代码,最终从我们的服务器读取 .php 文件并从配置文件等获取密码?还是他们唯一能做的事情 DOM 相关?

他们可以:

  1. 控制用户的 cookie,包括读取和修改 他们。

  2. 将用户重定向到他们想要的任何站点。

  3. 将他们想要的任何代码嵌入到页面中。

他们不能:

  1. 直接访问 php 文件。
  2. 直接访问任何服务器文件。

Javascript 在浏览器中运行,而不是在服务器上运行。

您不必担心 PHP 文件或配置文件,但窃取会话 cookie 或其他 XSS 式攻击绝对是个问题。

为什么他们t/won不能以API的形式提供数据?

您实质上是在授予他们受信任的 XSS 权限。
如果您可以在 Web 浏览器中执行某些操作(发帖、"browse" 页面等),则可以使用 JavaScript 使其自动化。他们将无法 upload/modify 您的 PHP 文件,除非您(或您的用户)可以。

对于用户来说,您是在赋予他们冒充您的能力。
对你来说,你给了他们冒充用户的能力。

Can they in their javascript for example write malacious code that in the end reads .php files from our server and get passwords from config files etc?

他们可以在您页面上包含的 JavaScript 代码中为他们做 在该页面上的 JavaScript 代码中可以做的任何事情.所以这可能是您可以在客户端做的任何事情。它包括(例如)抓取暴露给您的页面的会话信息,并能够将该信息发送到其他地方。

如果您不相信他们不会这样做,请不要在您的页面中包含他们的JavaScript。

We're talking to a 3rd party to include some of their data on a website of ours

让他们以 数据 的形式提供该信息,而不是代码,您通过 ajax 请求,并让他们为 [=30] 启用 Cross-Origin Resource Sharing =] 对来自您的来源的请求有疑问。然后,您知道您只是在获取他们的数据,而不是让他们 运行 编码。

请注意,使用 JSONP 而不是 CORS 将使他们能够再次 运行 编码,因此如果您不信任他们,则必须 ajax 使用 CORS。