我想知道...... 我们都知道,我们应该在后端验证用户输入,即使我们在前端验证它。换句话说 - 前端验证仅用于可用性,后端验证用于质量和安全性。
假设我的网页上有一个输入字段,用户可以写一些文字。攻击者是否有可能输入如此长的文本,以至于它不适合在后端保存文本的变量?到目前为止我所看到的只是确保一个字符串适合数据库字段。
String txt = getParameter("usertext");
assert(txt.length() < 201);
// the field in the database:
// user_text varchar(200),
但是如果用户文本很长,String txt
太长,我的程序会不会在第一行崩溃?
我希望这不会讨论String
可能有多长。如果我们能够做到没有堆大小和虚拟内存的话,它会很棒;)
答案 0 :(得分:0)
但是如果用户文本很长,那么String txt会太小,我的程序会不会在第一行崩溃?
答案是否定的:你对String对象的大小没有实际限制。
但考虑到以下问题:UTF-8字符。
当数据库字段大小用BYTES(而不是字符,这是我的情况下的默认值)表示VARCHAR2类型(这是一个示例)时,我遇到了问题,并且您插入的UTF-8字符不止一个字节。
示例:
数据库字段= VARCHAR2(50)
验证:字符串长度&lt; = 50
字符串的颜色标示价广告的其他价格分类请求你的意饰少于50个字符但超过50个字节。
spring验证认为它是传递的(长度小于50)但是DB insert语句抛出异常......