ASP.NET WebForms可以操纵客户端的控制值以在回发上使用

时间:2014-04-16 06:11:41

标签: asp.net sql webforms code-injection

对不起标题,不知道最简单的方法。

我正在使用带有webforms的ASP.NET vb.net。我在页面上有一个下拉列表控件。 目前,当所选下拉列表发生更改时,它会在按钮单击时回发,并使用所选值

执行某些操作

我想知道是否有可能(由黑客等),操纵下拉列表的值或在Web请求中发送更改后的值,以便它们可以在下拉列表中定义选项服务器端。

e.g

Private Sub testbutton_Click(sender As Object, e As EventArgs) Handles testbutton.Click
   Dim test As String = testdropDown.SelectedItem.Value
   testlabel.text = test
End Sub

如果所选值在用户定义的值之外更改,则标签可以填充诸如xss之类的内容。

或者,如果我将该值放入SQL查询中,并且只想要1-10的选项,他们是否可以更改下拉值以输入25并让它成功传入查询?

1 个答案:

答案 0 :(得分:0)

是的,但是ASP.NET可以使用构建机制来避免它http://msdn.microsoft.com/en-us/library/hh882339(v=vs.110).aspx。即使在客户端更改了值并且它与viewstate不匹配,它也会引发异常。如果您不更改任何默认设置,我认为您是安全的。使用客户端逻辑无法更改下拉列表的值,因为EnableViewStateMac属性,它将在.net中抛出损坏的视图状态的异常。

         int val;
         if(int.TryParse(Request.QueryString["val"]),val){
              //now check the range or custom business logic
              if(val > A1 || val < A2)
                   throw new Applicationexception("Out of range");
              //process here

         }else{
            throw new Applicationexception("Some issue");
         }