我正在使用ASP.NET 4.0 Framework.I有一個包含10個PDF文件的目錄,例如pdf1,pdf2 .... pdf10。在按鈕單擊我使用Response.Redirect &傳遞Pdf文件路徑,以便在瀏覽器中打開它。但是,這使用戶能夠使用此URL查看PDF文件夾的路徑(url),他可以直接打開任何其他pdf。我怎樣才能阻止他直接從URL訪問PDF如何防止用戶直接輸入url
回答
使用Request.ServerVariables["HTTP_REFERER"]
這會告訴你請求來自哪裏。如果它不在您的網站上,則採取適當的措施。
例如
if(Request.ServerVariables["HTTP_REFERER"].ToLower().IndexOf("mysite.com") == -1){
// Not from my site
Response.Redirect("NotAllowed.aspx");
}
你能否詳細說一下你的意思。 – 2011-05-18 08:50:37
對我來說,這很清楚他的意思 – 2011-05-18 08:51:42
如果重定向的url直接轉到pdf,這是行不通的,因爲沒有地方可以運行此代碼。需要做的是重定向到一個httphandler,以便在流式傳輸pdf之前進行檢查。 – 2011-05-18 09:00:09
這個link可能會幫助你阻止他直接從URL訪問PDF。
如果您想在流式傳輸pdf之前執行某種服務器端檢查,那麼使用httphandler是正確的選項。 – 2011-05-18 09:01:56
您將需要添加一個安全層。如果您使用的是MVC,實現它可能會更簡單,因爲您將在控制器操作中執行授權。但是,對於傳統的ASP,您可能需要實現自定義處理程序。
*大聲笑*:托馬斯有你的答案! – 2011-05-18 08:55:31
有沒有簡單的解決方案。你可以根據服務器的日期/時間來設計一些滾動代碼,這些日期/時間必須是查詢字符串的一部分,並且在頁面加載時檢查它的正確性,如果你使它足夠複雜/冗長,那麼人們將無法手動輸入。
使用此代碼在Global.asax.cs中並調用[NoDirectAccess]所有控制器
//Prevent direct URL access: Call [NoDirectAccess] to all controllers to block
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class NoDirectAccessAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Request.UrlReferrer == null ||
filterContext.HttpContext.Request.Url.Host != filterContext.HttpContext.Request.UrlReferrer.Host)
{
filterContext.Result = new RedirectToRouteResult(new
RouteValueDictionary(new { controller = "Home", action = "Login", area = "" }));
}
}
}
- 1. CakePHP的防止用戶輸入URL
- 2. 防止用戶輸入URL的值
- 3. 如何防止直接訪問URL?
- 4. 如何防止用戶輸入?
- 5. 如何防止用戶輸入褻瀆?
- 6. 如何防止用戶輸入小數?
- 7. 防止用戶直接訪問django中的重定向URL
- 8. 如何防止用戶輸入錯誤的輸入?
- 9. 如何防止用戶輸入零作爲輸入?
- 10. 輸出用戶輸入 - 防止xss
- 11. 如何防止在ASP.NET/IIS環境中直接調用URL?
- 12. 防止直接訪問URL的文件?
- 13. 如何防止用codeigniter輸入url進入網站
- 14. 如何防止空輸入?
- 15. 如何防止reloadRowsAtIndexPaths阻止用戶輸入?
- 16. 如果用戶手動輸入地址欄,如何防止URL重定向?
- 17. 如何防止用戶直接訪問我的html頁面
- 18. 防止用戶直接從網站下載文件,如何?
- 19. 如何防止用戶直接訪問HTML頁面
- 20. 如何防止用戶直接在node.js中訪問網頁?
- 21. 防止提交,直到輸入變化
- 22. 防止用戶更改輸入法
- 23. 運行Minitest時防止用戶輸入
- 24. 防止用戶輸入某些字符?
- 25. 防止用戶輸入日期
- 26. 防止用戶輸入一次註銷
- 27. 如何防止對操作類的直接URL訪問
- 28. 如何防止從jsp頁面的url直接訪問頁面
- 29. 如何通過URL直接訪問文件來防止下載?
- 30. 如何防止直接URL與登錄頁
我想,除非你創造一些類型的認證機制,這將是困難的。 – faester 2011-05-18 08:47:50