输入验证 - 一般主题

时间:2013-01-17 15:04:16

标签: string validation

我想知道...... 我们都知道,我们应该在后端验证用户输入,即使我们在前端验证它。换句话说 - 前端验证仅用于可用性,后端验证用于质量和安全性。

假设我的网页上有一个输入字段,用户可以写一些文字。攻击者是否有可能输入如此长的文本,以至于它不适合在后端保存文本的变量?到目前为止我所看到的只是确保一个字符串适合数据库字段。

String txt = getParameter("usertext");
assert(txt.length() < 201);
// the field in the database: 
// user_text varchar(200),

但是如果用户文本很长,String txt太长,我的程序会不会在第一行崩溃?

我希望这不会讨论String可能有多长。如果我们能够做到没有堆大小和虚拟内存的话,它会很棒;)

1 个答案:

答案 0 :(得分:0)

  

但是如果用户文本很长,那么String txt会太小,我的程序会不会在第一行崩溃?

答案是否定的:你对String对象的大小没有实际限制。

但考虑到以下问题:UTF-8字符。

当数据库字段大小用BYTES(而不是字符,这是我的情况下的默认值)表示VARCHAR2类型(这是一个示例)时,我遇到了问题,并且您插入的UTF-8字符不止一个字节。

示例:

数据库字段= VARCHAR2(50)

验证:字符串长度&lt; = 50

字符串的颜色标示价广告的其他价格分类请求你的意饰少于50个字符但超过50个字节。

spring验证认为它是传递的(长度小于50)但是DB insert语句抛出异常......