0

我正在开发一个在线出版物订阅网站。我在 ASP.NET MVC 1 中开发了它。

基本上,用户购买了一本杂志或报纸,并且该出版物的路径可供他们使用。但是,问题 22 是,不允许他们查看出版物的文件路径,因为这将是不安全的。

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

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

如果有人对检索 html 文件并将其显示在浏览器中的安全方法提出建议,我们将不胜感激。谢谢。

4

2 回答 2

1

简单的!将您的秘密 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

您还可以更进一步,通过检查引用者来检查是否从您的站点调用了此控制器操作(而不是直接调用)。

希望这可以帮助...

编辑:您也可以将“授权用户 ID”存储在数据库记录中,并检查以确保只有当 ID 与当前登录的用户 ID 匹配时才能访问它,以防止未经授权访问此控制器操作和杂志。 ..如果没有,将它们重定向到登录屏幕

return Redirect("/MyLoginURL");
于 2013-05-10T09:21:16.210 回答
0

通过 C#通过SFTP连接到远程服务器(所有发布文件所在的位置)。[此链接显示如何连接到 SFTP 并通过 C#.Net 下载文件]并将文件下载到您的端到随机数生成的文件夹中。现在,您可以将文件提供给最终用户。

于 2013-05-10T09:06:22.020 回答