为什么输入的字符串要对其增加限制
3个回答
展开全部
除了heikefirst所说的缓冲区溢出攻击这种可能性外,对于程序员限制用户输入的数据更多考虑的是变量和数据库存储问题。
与用户输入框相对应的,我们编程序的肯定要给出一个变量存储输入的数据,比如你那个姓名,而且这个数据往往还要存储到数据库中。这就涉及到2个长度的问题。一个是变量的长度能否容纳,另一个是数据库中我们用什么类型的字段存储。对于变量来说,这种问题往往不是特别严重,尤其是对于能够动态管理内存的高级语言来说,比如Java语言的字符串,用String存储学生姓名,这个实际上并没有什么长度限制,除非你输入的信息撑爆Java堆栈,否则不会出错。当然如果你用字符数组存的话则存在问题,多了的话显然存不下,对于Java就是数组越界异常,对于C则是缓冲区溢出问题。
数据库的问题则更明显,存个字符串我们一般用char或varchar,不论哪种都涉及到指定字段长度的问题,如果指定存储名字的字段长度是16,那显然在程序中就要限制用户的输入,否则数据库存不了怎么办?要么出错要么截断丢失用户数据。
与用户输入框相对应的,我们编程序的肯定要给出一个变量存储输入的数据,比如你那个姓名,而且这个数据往往还要存储到数据库中。这就涉及到2个长度的问题。一个是变量的长度能否容纳,另一个是数据库中我们用什么类型的字段存储。对于变量来说,这种问题往往不是特别严重,尤其是对于能够动态管理内存的高级语言来说,比如Java语言的字符串,用String存储学生姓名,这个实际上并没有什么长度限制,除非你输入的信息撑爆Java堆栈,否则不会出错。当然如果你用字符数组存的话则存在问题,多了的话显然存不下,对于Java就是数组越界异常,对于C则是缓冲区溢出问题。
数据库的问题则更明显,存个字符串我们一般用char或varchar,不论哪种都涉及到指定字段长度的问题,如果指定存储名字的字段长度是16,那显然在程序中就要限制用户的输入,否则数据库存不了怎么办?要么出错要么截断丢失用户数据。
来自:求助得到的回答
展开全部
你不加限制,看看会有什么后果。
举例:
在输入手机号码时,一般是11位的。加限制是为了帮助你简化问题的难度
举例:
在输入手机号码时,一般是11位的。加限制是为了帮助你简化问题的难度
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
什么意思,有长度的if判定?
追问
比如一个行吗输入框,现在我要规定该姓名只能输入15个字符之内的数据,我想请问,为什么要增加这个限制,这样做对程序有什么好处。增加了这个限制,会产生一些其余的问题,那么为什么要增加这个限制呢。
追答
如果随便用户输入,那用户输入太长取回的时候缓冲区放不下,软件不就error了
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询