gpt4 book ai didi

node.js - 在 Nodejs 中验证并安全地提供 youtube 链接?

转载 作者:行者123 更新时间:2023-12-03 06:23:33 25 4
gpt4 key购买 nike

我想允许用户发布嵌入 youtube 链接并将其显示在我的 nodejs 应用程序中。

Node 提供了一种方便的解析 url 的方法:

var url = require('url');
var youtube = url.parse("https://www.youtube.com/embed/eisKxhjBnZ0");

console.log(youtube);

/*
{ protocol: 'https:',
slashes: true,
auth: null,
host: 'www.youtube.com',
port: null,
hostname: 'www.youtube.com',
hash: null,
search: null,
query: null,
pathname: '/embed/eisKxhjBnZ0',
path: '/embed/eisKxhjBnZ0',
href: 'https://www.youtube.com/embed/eisKxhjBnZ0' }
*/

我打算检查 host确保源链接确实来自官方 Youtube,然后保存 pathname到分贝。当用户请求页面时,我会通过拼凑硬编码的 url 信息 + 路径名来加载视频:

IE,
// Verify Youtube source link
if (youtube.host == 'www.youtube.com') {
saveToDB(youtube.pathname);
}

// ... Later ...
<iframe src="https://www.youtube.com" + video.pathname></iframe>

这是从 youtube 提供嵌入式视频的安全方式吗?也只会检查 host ,但服务于整个 href也安全而不是附加到硬编码的网址?

最佳答案

原则上,在提供服务之前,应该检查整个 href,而不仅仅是顶级主机。正如您在代码中看到的,正在解析 url 并提取路径。没有对实际内容进行检查 - 因此不能对其安全性提出任何要求。

但在这种情况下,真正的保证是 YouTube 本身。可以有把握地假设,YouTube 比大多数都具备更好的检测和删除上传到其服务器的恶意内容的能力。所以最后一步有点多余 - 通过将主机与硬编码值进行比较来检查主机并不能确保任何事情 - 因为它总是会返回 true (它可能会因为前面的 www. 而提示,但这不是问题) .也可以使用原始 url 而不是将提取的路径名附加到硬编码的主机名。

关于node.js - 在 Nodejs 中验证并安全地提供 youtube 链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30447117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com