检索外部html文件,并安全地显示在浏览器中

本文关键字:显示 浏览器 安全 外部 html 文件 检索 | 更新日期: 2023-09-27 18:13:03

我在一个在线出版物订阅网站工作。我是用ASP开发的。. NET MVC 1.

基本上,用户购买了杂志或报纸,并且该出版物的路径对他们可用。然而,问题是,他们不允许看到发布的文件路径,因为这是不安全的。

我已经建立了一个函数,可以检索出版物和下载它而不显示文件路径给用户,但这是一个问题,因为出版物是一个HTML文件,需要在同一目录下的其他文件和文件夹来查看杂志或报纸。

我知道你可能会说下载整个目录文件夹,但这是不合理的,因为它可以高达200MB。我想也许检索文件路径,然后重定向到一个页面,将在iframe中加载发布,但我认为这将是一个安全风险,以及任何有一点浏览器知识的人都可以查看源代码并从那里获得文件路径。

如果有人有一个安全的方法来检索html文件,并在浏览器中显示它的建议,任何帮助将不胜感激。谢谢。

检索外部html文件,并安全地显示在浏览器中

轻松!将您的秘密url存储在数据库表中,并通过ID来引用它们。

设置一个新的Controller动作,如下所示:

public ContentResult ShowNewspaper(long Id) {
    var mySecretURL = db.SecretURLs.Where(k=>k.Id == Id).FirstOrDefault(); // Grab URL entry the database
    string htmlCode = "";
    if(mySecretURL != null) {
         WebClient client = new WebClient();
         htmlCode = client.DownloadString(mySecretURL.URL);
    }else{
         htmlCode = "Page not found!";
    }
    return Content(htmlCode,"text/html");
}

那么现在如果你调用:

mysite.com/Home/ShowNewspaper/5

这将在数据库中存储的记录5的URL处加载HTML

你还可以更进一步,通过检查Referrer来检查这个控制器动作是否从你的站点调用(而不是直接调用)。

编辑:您也可以将"授权用户ID"存储在数据库记录中,并检查,以便只有当ID与当前登录的用户ID匹配时才能访问,以防止未经授权访问此控制器操作,因此杂志…如果没有,用

将它们重定向到登录屏幕
return Redirect("/MyLoginURL");

通过c#通过SFTP连接到远程服务器(所有发布文件驻留的地方)。[这个链接展示了如何通过c#连接到SFTP并下载文件。Net]并将文件下载到您的终端的随机数生成的文件夹。现在,您可以将该文件提供给最终用户。