我發現文檔談論「評估和演示是邪惡的」,我的理解是有性能問題,甚至MSDN說明它:評估安全性?
因爲這種方法進行後期綁定的評價,使用反射 在運行時,它可能會導致性能相比 標準ASP.NET數據綁定語法明顯慢 - MSDN
出了性能問題下面的代碼,並考慮:
<%# Eval("MyDataFieldFromDataBase") %>
可以做些什麼來防止字段被危險地解釋(以防止代碼注入)?
我發現文檔談論「評估和演示是邪惡的」,我的理解是有性能問題,甚至MSDN說明它:評估安全性?
因爲這種方法進行後期綁定的評價,使用反射 在運行時,它可能會導致性能相比 標準ASP.NET數據綁定語法明顯慢 - MSDN
出了性能問題下面的代碼,並考慮:
<%# Eval("MyDataFieldFromDataBase") %>
可以做些什麼來防止字段被危險地解釋(以防止代碼注入)?
我相信你在談論一些不同的Eval,而不是ASP.NET的。在aspx中的Eval只是一個method,它和其他方法一樣有害。
它的一個潛在問題是,Eval返回一個對象,所以如果你的代碼沒有期待這個特定的類型,你可以得到無效的轉換異常。因此,您在頁面上使用Eval時沒有類型安全性。另一件事是Eval不會做任何類型的轉義,所以如果你的數據庫中有潛在危險的內容,它將被Eval返回。但是這不是特定於Eval的問題,您只需確保您清理所有用戶輸入,Eval就無關緊要。
除此之外ASP.NET的Eval是完全無害的。
您還沒有明確表示「hack」是什麼意思。 – mason
使eval做任何事情比顯示'Foo.MyDataFieldFromDatabase'的值。 –
爲什麼?你想達到什麼目的? – mason