String 输入验证-一般主题
我在想。。。 我们都知道,我们应该在后端验证用户输入,即使我们在前端验证。换句话说,前端验证只是为了可用性,后端验证是为了质量和安全性 假设我的网页上有一个输入字段,用户可以编写一些文本。攻击者是否有可能输入如此长的文本,以致无法放入后端保存文本的变量中?到目前为止,我所看到的只是确保一个字符串适合数据库字段String 输入验证-一般主题,string,validation,String,Validation,我在想。。。 我们都知道,我们应该在后端验证用户输入,即使我们在前端验证。换句话说,前端验证只是为了可用性,后端验证是为了质量和安全性 假设我的网页上有一个输入字段,用户可以编写一些文本。攻击者是否有可能输入如此长的文本,以致无法放入后端保存文本的变量中?到目前为止,我所看到的只是确保一个字符串适合数据库字段 String txt = getParameter("usertext"); assert(txt.length() < 201); // the field in the data
String txt = getParameter("usertext");
assert(txt.length() < 201);
// the field in the database:
// user_text varchar(200),
但是如果用户文本非常长,那么字符串txt就会太小,我的程序不会在第一行崩溃吗
我希望这不会是一个关于字符串长度的讨论。如果我们能做到这一点,没有堆大小和虚拟内存,这将是伟大的
但是如果用户文本非常长,那么字符串txt就会太小,我的程序不会在第一行崩溃吗
答案是否定的:字符串对象的大小没有实际限制
但要考虑以下问题:UTF-8字符
当数据库字段大小以字节而不是字符表示时,我遇到了一个问题,这是我的VARCHAR2类型的默认值。这是一个示例,您插入了占用多个字节的UTF-8字符
例如:
数据库字段=VARCHAR2 50
验证:字符串长度-每个字符在Java中为2字节-不是UTF-16字符吗?如果是这样的话,它真的很适合测试:我不知道它是UTF-8还是16,但在Oracle中它需要超过一个字节,这就是问题所在。在java中,即使字符占用2个字节,length方法也不考虑这一点。