Как скрыть конечную точку API веб-службы .asmx в исходном коде?

1

Я вызываю службу.asmx из внутреннего тега скрипта на странице aspx. Когда я просматриваю источник страницы, он показывает мой веб-сервис.

Как защитить веб-сервис от разоблачения? потому что, когда кто-то просматривает источник страницы, он может видеть имя веб-службы, а также имя всех методов.

.aspx Страница:

<asp:PlaceHolder ID="divBody" runat="server">
        <div class="aa-dashboard-wrapper">
            <asp:Textbox id="textbox1" runat="server"></asp:Textbox> 
        </div>
</asp:PlaceHolder>

Вот мой тег сценария, который помещен в нижней части моей страницы aspx.

    $("#textbox1").autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: '<%=ResolveUrl("~/WebService.asmx/webServiceMethod") %>',
                        data: "{ 'keyword': '" + request.term + "'}",
                        dataType: "json",
                        timeout: 20000,
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        success: function (data) {
                        },
                        error: function (response) {

                        },
                        failure: function (response) {

                        }
                    });
                },
                select: function (e, i) {

                },
                minLength: 2
            })

</script>
  • 0
    Веб-сервис вызывается из браузера пользователя с помощью ajax-запроса, если он не доступен для общественности, как вы ожидаете, что он будет работать?
  • 0
    я могу закодировать его имя? по этому он может не увидеть имя службы asmx?
Показать ещё 3 комментария
Теги:
web-services
asp.net-ajax

3 ответа

2

Хотя вы не можете запретить пользователям просматривать URL-адрес вашего сервиса, вы можете остановить их просмотр документации для него - просто поместите это в тег system.web вашего web.config

<webServices>
    <protocols>
        <remove name="Documentation" />
    </protocols>
</webServices>

См. Https://support.microsoft.com/en-us/kb/815149 в разделе "Удаление протокола документации".

1

Невозможно полностью скрыть конечные точки API от кого-то, кто хочет его найти. Даже если вы каким-то образом запутаете вызов этого в некоторой конструкции javascript, он все равно будет отображаться в веб-инспекторе Chrome. И на самом базовом уровне я все еще вижу это, когда перехватываю связь с пакетными снифферами.

1

Лучший способ - иметь JS файл и разместить там AJAX-вызов. Даже в этом случае пользователь может просматривать и просматривать JS, но шансов немного меньше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню