我发现文档谈论“评估和演示是邪恶的”,我的理解是有性能问题,甚至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