【问题标题】:I need to redirect a file from server to a folder without htaccess我需要将文件从服务器重定向到没有 htaccess 的文件夹
【发布时间】:2019-02-10 20:11:27
【问题描述】:

我的“网站/文件夹/文件”上有一个文件,我想重定向它以防止用户在不使用 htaccess 的情况下访问该文件。 我的文件是一个包含 url 的巨大数据库,我不希望用户通过键入文件的直接 URL 来访问该文件。 该文件由我的 chrome 扩展程序调用和使用,如果用户尝试访问该数据库中的 URL 之一,他会阻止对用户的访问。 问题是通过输入我们有权访问的文件的直接 url...

我用 .htaccess 文件尝试了一切,我知道我们可以用 .htaccess 文件阻止、重定向等,但是如果我用 htaccess 重定向或阻止数据库的 url,我的扩展程序将不再工作,因为DB 被 htaccess 文件阻止。 所以我正在努力寻找解决方案,也许是一个!

我的背景.js

'use strict';
let db = []; // session Global
// ----- parse & cache the database data
fetch('http://thmywebsite.com/folder/db.dat')
.then(response => response.text())
.then(text => { db = text.trim().split(/[\r\n]+/); })
.catch(error => console.log(error));
chrome.webRequest.onBeforeRequest.addListener(details => {
let url = new URL(details.url);
return { cancel: url && url.hostname && db.includes(url.hostname) };
},
{ urls: ["http://*/*", "https://*/*"] },
["blocking"]
);
chrome.extension.isAllowedIncognitoAccess(function (isAllowedAccess) {
if (isAllowedAccess) return; // Great, we've got access
})

【问题讨论】:

    标签: .htaccess redirect


    【解决方案1】:

    您实际上无法做到这一点。您不能阻止需要公开可用的资源(通过您的客户端脚本)。

    对于想要你的数据库的人来说,你可能会让这有点困难,也许通过发送一个唯一的 HTTP 请求标头作为你的fetch() 的一部分。然后,您可以检查此标头服务器端(在.htaccess 中)是否存在,否则阻止请求。这可以防止用户随意直接在浏览器中请求此文件。但是,对于任何查看您的脚本(或监控网络流量)的人来说,绕过这一点是微不足道的,因为他们可以构建请求来模仿您的脚本。但我们不要忘记,您的脚本无论如何都会将文件下载到浏览器 - 所以它已经存在,任何人都可以保存。

    您需要重新考虑您的数据模型。如果您不希望数据库可公开访问,那么它根本无法公开访问。您可以将请求发送到您的服务器,而不是您的脚本将数据库下载到客户端并在本地处理请求。您的 服务器 然后执行必要的查找(在“隐藏”数据库上)并发回响应。然后,您的脚本会根据此响应进行操作。

    【讨论】:

    • 感谢您的信息,实现这一目标很复杂吗?
    • 并非如此。没有比您当前的解决方案更复杂,只是不同。除了客户端 JavaScript 之外,它还需要一些服务器端脚本。
    • 因为我不知道如何用我当前的 background.js 实现这一点
    • 你具体坚持哪一点?你显然需要重写你的background.js 脚本,但我认为核心原则并没有什么不同。而不是 fetch() 在脚本开头使用整个数据库文件并使用 JS 查找 URL。您在事件侦听器中 fetch() 您的服务器端脚本并以 URL 参数或自定义标头的形式传递 URL。您的服务器端脚本(PHP、python、C#?)然后在数据库中查找 URL(如果这是“巨大的”,那么您将使用关系数据库获得更好的性能)并发送 boolean回复客户。
    • 是的,数据库是巨大的 5mb +300.000 url,以文本格式存储在 .db 文件中,例如:www.badurl01.com badurl01.com 等我很高兴看到我的问题存在解决方案,现在我不知道如何从服务器端做到这一点!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 2013-07-10
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多