ASP.Net控件是否通过viewstate公开SQL查询?

作为默认ASP.Net控件集的一部分的控件 – 所有时间都使用viewstate或controlstate吗?

即如果我将下面的代码放到一个全新的Web表单上,我的SQL字符串是否放在未加密的控制状态?

<asp:SqlDataSource ID="mobileData" runat="server" 
        DataSourceMode="DataReader" 
        SelectCommand="SELECT * from ma.bob WHERE Vendor IS NOT NULL" 
/>

我知道如何加密viewstate和controlstate,但我觉得这个常见的用例可能非常不安全.当然可以通过修改控制状态来执行SQL注入攻击吗?

我想大多数人都会想到加密敏感应用程序的控制状态,但实际上,如果我的假设是真的 – 那么应该总是这样做 – 而visual studio应该默认启用它吗?

我是否正确地考虑过这个问题,或者我是否有错误的结束?

最佳答案 要回答你的问题,不.


MSDN

For security purposes, the SelectCommand property is not stored is view state. Because it is possible to decode the contents of view
state on the client, storing sensitive information about the database
structure in view state could result in an information disclosure
vulnerability.

点赞