none
Запретить открытие .asmx файла в веб браузере RRS feed

  • Вопрос

  • Здравствуйте! Как можно запретить открытие файла .asmx в веб браузере? например при открытие файла направлять пользователя на страницу ошибки (404)?
    3 февраля 2014 г. 7:10

Ответы

  • Добрый день.

    А в связи с чем такое странное желание? Ведь разница когда к вам подключается Web-браузер и не Web-браузер, как правило только в поле UserAgent:

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {
    	[WebMethod]
    	public string HelloWorld()
    	{
    		if (this.Context.Request.UserAgent.ToLower().Contains("mozilla"))
    		{
    			this.Context.Response.Redirect("404.html");
    		}
    		return "Hello World";
    	}
    }

    Да и то, предложенный код будет работать только при вызове метода, но никак не при запросе WSDL...
    • Помечено в качестве ответа Program-s.g 3 февраля 2014 г. 9:28
    3 февраля 2014 г. 9:18
    Отвечающий
  • Смысла в этом нет, любую строку агента можно подделать. А вот ставить ограничения на GET или POST для метода сервиса нужно. Это cамая базовая защита от некоторых видов сетевых атак. Если метод вашего сервиса модифицирует данные, то он только должен отвечать на POST запросы. Если только читает, то GET. Учтите это на будущее.

    Сделаем содержимое сообщества лучше, вместе!

    • Изменено YatajgaEditor 3 февраля 2014 г. 10:52
    • Помечено в качестве ответа Program-s.g 3 февраля 2014 г. 11:05
    3 февраля 2014 г. 10:52
    Модератор

Все ответы

  • Добрый день.

    А в связи с чем такое странное желание? Ведь разница когда к вам подключается Web-браузер и не Web-браузер, как правило только в поле UserAgent:

    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {
    	[WebMethod]
    	public string HelloWorld()
    	{
    		if (this.Context.Request.UserAgent.ToLower().Contains("mozilla"))
    		{
    			this.Context.Response.Redirect("404.html");
    		}
    		return "Hello World";
    	}
    }

    Да и то, предложенный код будет работать только при вызове метода, но никак не при запросе WSDL...
    • Помечено в качестве ответа Program-s.g 3 февраля 2014 г. 9:28
    3 февраля 2014 г. 9:18
    Отвечающий
  • Понятно, спасибо!
    3 февраля 2014 г. 9:27
  • Смысла в этом нет, любую строку агента можно подделать. А вот ставить ограничения на GET или POST для метода сервиса нужно. Это cамая базовая защита от некоторых видов сетевых атак. Если метод вашего сервиса модифицирует данные, то он только должен отвечать на POST запросы. Если только читает, то GET. Учтите это на будущее.

    Сделаем содержимое сообщества лучше, вместе!

    • Изменено YatajgaEditor 3 февраля 2014 г. 10:52
    • Помечено в качестве ответа Program-s.g 3 февраля 2014 г. 11:05
    3 февраля 2014 г. 10:52
    Модератор
  • Смысла в этом нет, любую строку агента можно подделать. А вот ставить ограничения на GET или POST для метода сервиса нужно. Это cамая базовая защита от некоторых видов сетевых атак. Если метод вашего сервиса модифицирует данные, то он только должен отвечать на POST запросы. Если только читает, то GET. Учтите это на будущее.

    Сделаем содержимое сообщества лучше, вместе!


    Спасибо ! Я обязательно учту.
    3 февраля 2014 г. 11:06