我在该应用程序中使用C#mvc我有一个带有只读属性的TextBox,并使用正则表达式来限制特殊字符。它可以很好地获取输入(没有readonly),但是当那时查看一页中的详细信息TextBox将是只读的。
如果我使用inspect元素更改值,则异常将引发该字段的错误消息
我正在使用此代码验证
[RegularExpression(@"^[a-zA-Z0-9\s\-]+$", ErrorMessage = "Special Characters are not allowed")]
答案 0 :(得分:1)
我有一个带有只读属性的TextBox,并使用正则表达式来限制特殊字符。它可以很好地获取输入(没有readonly),但是当那时查看一页中的详细信息TextBox将是只读的。
如果我使用inspect元素更改值,则异常将引发该字段的错误消息
换句话说,正则表达式在用户填写表单时工作正常,并且只允许正则表达式允许的字符。在另一个页面中,您显示信息,但出于查看目的(只读),您担心用户可以使用浏览器devloper工具(检查元素)更改只读字段。因此,您希望正则表达式阻止它。
始终在服务器上验证
您永远不应该信任在Web表单中提交的输入。即使在第一种情况下,当您允许用户编辑字段时,用户也可以关闭正则表达式。这就是您应该再次验证服务器端代码的原因。
在第二种情况下,当您只是显示信息时,如果用户进入幕后(开发人员工具)并更改字段,则用户无法提交信息,那么您不必担心。但是,如果更改影响了另一个可以提交的项目,那么您需要在服务器端验证它。
您应始终并始终检查服务器端的Web表单输入,即使您已在客户端进行了检查。如果用户精明,他们甚至可以为下拉列表添加更多选项,从中选择项目,然后提交表单。因此,不要相信它。