Как обезопасить доступ к SWF-файлу с помощью ASP.NET? - PullRequest
6 голосов
/ 06 апреля 2010

У нас есть SWF-файл, который мы хотим защитить и сделать доступным только для авторизованных пользователей.

Я встроил файл в страницу aspx, и это прекрасно работает, так как ASP.NET обрабатывает страницу aspx, я могу использовать функции авторизации ASP.NET и в web.config ограничить доступ к role = = AllowedUsers, например .

Однако умные пользователи все же могут получить доступ к файлу, например, напрямую зайдя на сайт www.mysite / flash.swf. Мы хотим сделать такой доступ защищенным .

Любая помощь будет принята с благодарностью!

Спасибо!

Ответы [ 2 ]

5 голосов
/ 07 апреля 2010

Аристос,

Вы были правы. Вчера днем, перед тем как я пошел домой, я попытался создать собственный обработчик HTTP. И это сработало хорошо. :-) Спасибо, что ответили + 1

public class CustomFlashHandler : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
  if (!context.User.Identity.IsAuthenticated)
  {
    context.Response.Redirect("Default.aspx?ReturnUrl=%2felVideo.aspx");
    context.Response.StatusCode = 401;
    return;
  }

  var url = context.Request.CurrentExecutionFilePath;

  if (string.IsNullOrEmpty(url)) return;

  HttpContext.Current.Response.ClearContent();
  HttpContext.Current.Response.ClearHeaders();
  HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("filename={0}", url));
  HttpContext.Current.Response.AddHeader("Content-Type", "application/x-shockwave-flash");
  HttpContext.Current.Response.WriteFile(url);
  HttpContext.Current.Response.End();
}

public bool IsReusable
{
  get { return false; }
}

}

Как сказал Аристос, вам нужно сопоставить ASP.NET для обработки файлов .swf в IIS.

альтернативный текст http://www.freeimagehosting.net/uploads/30424ac60a.png

Затем добавьте пользовательское сопоставление в web.config приложения

<httpHandlers>
  <add verb="*" path="*.swf" type="XXXXX.Web.XXXXX.CustomFlashHandler" validate="false" />
</httpHandlers>

1 : href = http://www.freeimagehosting.net/>http://www.freeimagehosting.net/uploads/30424ac60a.png

1 : href = http://www.freeimagehosting.net/>http://www.freeimagehosting.net/uploads/30424ac60a.png border = 0 alt = "Бесплатный хостинг изображений">

1 голос
/ 06 апреля 2010

Я думаю, что наиболее простым и быстрым решением является сопоставление этого расширения (.swf) для обработки с помощью asp.net.

Я не знаю, работает ли оно, потому что я этого не делал,но вы можете попробовать.

Еще один способ - разместить эти файлы где-нибудь скрытым или со сложным именем и использовать файл .ashx дляпросто прочитайте и отправьте их.В файле .ashx вам нужно установить правильный Response.ContentType для флэш-памяти, и просто прочитать и отправить правильный файл .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...