簡體   English   中英

如何在 asp.net/Jquery 中保護 WebMethod

[英]How to Secure a WebMethod in asp.net/Jquery

我正在使用 Jquery Ajax 從 aspx 頁面調用 WebMethod。這是我的代碼

$(document).ready(function () {
        $("#btnshow").click(function () {
               $.ajax({

                type: "POST",
                url: "example.aspx/showData",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    $("#Result").text(msg.d);
                }
            });
        });
    });

aspx.cs 頁面上的代碼:

[System.Web.Services.WebMethod()]
[System.Web.Script.Services.ScriptMethod()]
public static List<LandmarkList> showData()
{
    LandmarkList ObjLL = new LandmarkList();
    return ObjLL.GetDataList();
}

我的問題是什么是保護此 Web 方法的專業方法?保護 Web 方法的可能方法是什么,以便用戶不會從客戶端調試工具復制該 url 並使用它。

注意:這些是打開的頁面,用戶不需要登錄這些頁面。

更新:我想讓某人在不實際訪問我的網站的情況下繼續使用我的網絡服務變得更加困難。

您的代碼中沒有 showData() 函數,但是任何人都可以簡單地調用 example.aspx/showData url 並獲得響應。

你可以做一些事情來嘗試確保他們從你的頁面調用。 最簡單的是,您可以通過檢查(在您的 Web 服務中)會話參數(您在頁面加載時設置)來簡單地檢查他們是否已經加載了頁面。 或者,例如,請參閱http://www.asp.net/web-api/overview/security/preventing-cross-site-request-forgery-%28csrf%29-attacks

但是,在加載頁面之前沒有任何形式的身份驗證並允許在那里調用服務,我認為任何此類安全措施的價值都是可疑的 - 您給自己帶來了安全的錯覺,而實際上沒有任何安全措施。 任何想要調用您的服務的人都可以簡單地編寫頁面加載腳本,然后調用並監控您的結果。 Web 服務與調用它的頁面一樣開放 - 說“我有這個打開的網頁但想確保它只以某種方式/由某些人調用”是沒有意義的。

在我看來,您更安全的做法是簡單地將 Web 服務視為開放的,並且不要在其中透露任何您不願意放在開放網頁上的內容。

可能不是世界上最好的解決方案,但實施起來非常簡單快捷——

使用 Cloudflare > 防火牆 > 工具 > 速率限制 > 創建自定義規則來阻止超過給定頻率的訪問,以區分使用和濫用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM