本週我們的服務器上出現了一個非常奇怪的問題,其中一個aspx腳本中的方法(沒有代碼隱藏文件)以某種方式從其他地方的完全不相關的頁面調用我們的網站。基本上,劇本這樣說:在其他腳本中使用ASPX頁面的公共方法
<script language="c#" runat="server">
public void Page_Load(object sender, EventArgs e)
{
// some initializer logic
PageMethod("data");
}
public string PageMethod (string strInput)
{
// More logic
}
</script>
我們經營的四臺服務器一個農場,我們看到了PageMethod
過得去的所有服務器上的幾個地方腳本調用,所以當我的第一反應是,這是一個已損壞緩存在服務器上(我仍然懷疑它可能),我的直覺告訴我,我們允許這發生在我們的代碼中。我們一直在使用這種代碼風格的yonks,但最近升級我們的服務器到.NET 2.0。
我的第一個問題是,如果在某個網站的其他地方的腳本中可以訪問aspx中的每個public
方法?我的第二個問題是,如果我們在aspx頁面上使用private
或protected
方法(我總是認爲獨立頁面中的代碼是自包含的,所以草率的訪問修飾符應該沒有區別)。
(注:我不寫太多C#,所以我的語言的把握是非常簡單,只是理論上的,我只是想成爲一個真正的問題之前解決此問題)
您能否提供有關您所看到/看到的內容的更多信息,從而促使您認爲這些方法是來自不相關網頁的呼叫?你在哪裏「看到」PageMethod被稱爲?在你的日誌中?這種情況下完整的網址是什麼? – 2011-02-26 09:23:32
是否有其他頁面有一個名爲「Page_Method」的方法?不知道你如何確定(或者認爲)其他請求正在調用這個特定頁面的方法,這很難說。 – 2011-02-26 09:43:42
@Shiv庫馬爾,我們的服務器捕獲所有未處理的異常的堆棧跟蹤,所以我可以看到腳本崩潰的Page_Load,緊跟在Page_Load之後,我看到了對PageMethod的調用。但是這兩頁之間絕對沒有聯繫。它幾乎看起來像是一個緩衝區溢出問題。 – Andrew 2011-02-26 11:13:52