是否可以將 asp 經典程式碼儲存到 MySQL 資料庫中並讓它在拉取時執行程式碼?例如將變數名稱儲存到字串中並讓它在顯示之前執行ASP?我懷疑這是不可能的,因為 MySQL 請求在頁面載入後運行,因此返回資料不會被執行,而只是變數名稱。另一件事是它可能是 HTML 編碼,在將其傳遞到 MySQL 伺服器後可能會對其進行編碼,但到目前為止它只是讀取變數名稱。對此的任何想法,這是不可能的,還是我以某種方式取消編碼:
我嘗試過使用像這樣的編碼方法,使用在其他地方工作的 Chr 替換函數,但該函數的使用是這樣的:
NEWSTRING = Server.HtmlEncode(OLDSTRING)
無論是否嘗試編碼,結果只會顯示 ASP Classic 程式碼,如下所示:
MESSAGE TO USER <%=Session("var_FOO")%>
雖然Encode似乎沒有改變螢幕上顯示的字串,但日誌結果顯示了編碼嘗試,它沒有將資料放入,而是像這樣轉換字元類型:
"var_Foo"
我可能用編碼找錯了樹,但如果你有錘子,你可以嘗試敲擊一些螺絲,直到它們進入。
這個功能目前對我來說很困難,因為一種更簡單的方法是像我一樣將字串儲存在資料庫中,然後在拉出字串後將變數添加到字串中,而不是放入它們進入資料庫。當然,這意味著用戶無法透過與其關聯的變數來控制錯誤訊息,但我想我可以接受這一點。
類似的問題提出將其作為函數來執行此操作,如果您閱讀帖子的其餘部分,您會發現存在差異。
P粉8934570262024-04-07 11:42:05
是的,這是可能的。經典 ASP 提供 Eval、Execute 和 ExecuteGlobal 方法,您可以向這些方法傳遞包含原始程式碼的文字字串。
在面向公眾的網站上這樣做是危險的;如果網路蠕蟲知道如何將任意程式碼寫入您的資料庫表,他就可以破壞、破壞或劫持您的應用程式。你並不偏執:積極主動的陌生人實際上正在密謀反對你,並尋找以這種方式運作的網站。小心點。
Eval(codeText) 運行表達式並傳回結果。 ExecuteGlobal(codeText) 運行它,就好像它在頂級上下文中一樣。 Execute(codeText) 在呼叫它的上下文(子程式或函數)中執行它。