很不理解的JSP验证程序片段
[文章作者:叶歆昊 最后修改:2010-07-17 转载请注明原文链接:http://littz.com/not-understand-the-jsp-fragment-validation-process.html]
最近重新设计学生之家后台的时候遇到了一段让人很不理解的JSP验证程序,代码如下
<%@
if((User_Name.indexOf(">")>=0)||(User_Name.indexOf("<")>=0)||(User_Name.indexOf('"')>=0)||(User_Name.indexOf("'")>=0)||(User_Name.indexOf("*")>=0)||(User_Name.indexOf("@")>=0)||(User_Name.indexOf("=")>=0)||(User_Name.indexOf("%")>=0))
{
response.sendRedirect("err.jsp?id=3");
return;
}
%>
大致是先判断输入的用户名里面是否含有% < >等之类的特殊字符,如果存在的话直接跳转到错误页面,如果不存在这些字符再比对数据库验证用户名和密码以及权限。
逻辑上,如果输入的用户名里面含有一个或多个 > 符号,对应的代码应该是
<%@ User_Name.indexOf (">")>=1 %>
才对,可是据说早几届最初设计这个验证程序的时候也是考虑的用>=1,但是没有起到程序应有的验证效果,查了很久之后无意之间把1改成0就能用了,他们也很不理解。希望有朋友能帮我解释这原因,Thank you!
2007/07/03 于 14:07:00
>=0表示为真,<0就是为假。懂了吧。当时我没反应过来。
2007/07/04 于 05:05:00
了解,不过C语言里面是非0为真,0为假,JAVA里是这样用啊。