如果要限制输入的最大长度,是否存在验证文本框输入的安全性原因?

时间:2010-10-01 15:37:37

标签: c# asp.net

由于我刚接触编码,而且我想了解为什么这里有更详细的问题。

如果您有一个文本框并且您要限制输入以说明2个字符,您真的需要进一步验证输入吗?

我所拥有的是一个最大长度为2的文本框。是否有安全理由在文本框中添加验证器。我应该在Asp.net中添加它。

8 个答案:

答案 0 :(得分:10)

是的,你仍然必须检查。设置MaxLength属性仅在输入元素上设置MaxLength属性;用户只需在他们获得的HTML源中删除该值,或通过任何可用的工具“破解”它。

您的服务器仍然需要确保它只有2个字符,并进行服务器端验证。

答案 1 :(得分:4)

您是在谈论输入的服务器端验证吗?如果是这样,那么你应该验证,因为任何人都可以在不通过浏览器的情况下构建HTTP POST请求,在这种情况下,他们没有2个字符的限制。

但是,安全验证仅取决于您将使用给定输入完成的任务。如果您正在构建数据库查询,使用输入发送电子邮件或其他此类内容,那么您应该始终验证,与输入长度无关。

答案 2 :(得分:1)

客户端验证器(如MaxLength)永远不可信任,因为您应用的客户端不受您的控制。如果你不相信我,请看看FireBug可以做些什么来改变FireFox中的HTML。

真的,你可以用2个字符的字符串来做很多安全风险,但是当得到这个值时,我会在字符串长度上做一些服务器端验证,并确保它是你期望的东西(比如字母数字字符)。

答案 3 :(得分:1)

用户可以修改maxlength属性。如果他们禁用/更改maxlength="2"并决定发布3个字符,您的代码可以处理吗?截断它,返回一个错误,但不要只是假设它们已经给你有效的输入。经常检查。

答案 4 :(得分:1)

表单数据可以通过除了遵循maxlength属性的浏览器之外的方式提交。黑客可以编写一个脚本来获取您的表单并提交数据,其中提交的表单数据不符合您在html或javascript中声明的任何客户端验证规则。

答案 5 :(得分:1)

任何客户端验证的唯一,唯一,唯一的原因(无论是来自javascript,HTML表单属性还是XForm约束)是为了让一个善意的用户更有可能做正确的事情,而不是输入一些东西这毫无意义。

在服务器端,出于同样的原因,您必须再次执行此操作,但也需要安全性。您不知道客户端验证是否有效,实际上您甚至不知道请求来自浏览器(获取表单提交只需不到一分钟,然后使用不同的值重新提交)如果你试图通过巧妙地了解客户看到的东西,使用过的等等来阻止这种情况,那就不长了。)

接受无效输入的效果可能很小,但考虑到因为你确实有客户端验证,那么如果收到无效输入,则更有可能是你被有意图的人探测(当然,那里)可能只是客户端的一个错误),所以即使你无法预测接受此类输入的任何不良影响,它仍然值得阻止它。

在我们考虑SQL注入,XSS或其他攻击是否可行之前。

答案 6 :(得分:1)

始终检查服务器上的输入,无论是否在客户端检查过。

对于客户端,设置最大长度就足够了。

你提到了asp.net验证器,如果你正在使用那些,那么确实将它添加到页面以获得客户端和服务器验证(在这种情况下,你关心服务器验证)。

答案 7 :(得分:0)

Validators使用javascript运行客户端,因此没有任何关于它们的安全性;他们很容易受到损害。它们仅仅是为了方便,为了安全目的,服务器端应该清理任何用户输入。