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