昨天编写了个网页登陆简单的实例,原本SQL语句为select * from info_test where name='n'and
pass='p'其中,name,pass 为数据库中的字段;但是这种构造方法不行,有注入漏洞,因此想到先从数据库中核对
name项,然后再比对密码项;
那么流程如下:
1、如果在库中检索不到n值,就输出“不存在该用户”;
2、如果匹配到n值,则继续匹配p值;
3、如果有p值就输出“正确登陆”;如果没有,则输出“密码错误”;
出现问题是:如果匹配到n值,但不管P值有没有,一概输出“密码错误”;请大家帮我看看!
----------------------------------------------------------------------
自行解决了问题:原因是数据库中的pass为char型,数据长度不够的时候,会自动加空格填平,这就导致了String读出密码,但是有空格的,所以出现了pw.equals(p)为false的情况;解决方法就是在
String pw=rs.getString(3);这一句上面加上.trim();去掉后面的空格;
即:String pw=rs.getString(3).trim();
好了,已经标好了颜色,请大家在编辑程序的时候注意一下!^0^
---------------------------------------------------------------start
Connection conn=null;//初始化
Statement st=null; //初始化
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url="jdbc:sqlserver://localhost:1433; DatabaseName=data_test";
String user="sa";
String password="mima";
conn=DriverManager.getConnection(url, user, password);
System.out.println("^0^连接数据库成功!");
}catch (Exception e) {
System.out.println("- -连接数据库失败!");
System.out.println(e.getMessage());
}
String n=request.getParameter("name");//得到提交页的用户值;
String p=request.getParameter("pass");//得到提交页的密码值;
st=conn.createStatement();//创造执行实例
String StrSQL="select * from info_test where name='"+n+"'";
ResultSet rs=st.executeQuery(StrSQL);//执行SQL语句;
if(rs.next())
{//如果用户存在
String pw=rs.getString(3);//将库中第3列的数据取出来,即取出库中密码;
out.println(pw); //在浏览器中输出密码;
if(pw.equals(p))//判断库中密码【pw】是否与提交页密码【p】相等;
{
out.println("正确登陆");//如果相等,则输出“正确登陆”;
st.close();//实例关闭;
conn.close();//数据库连接关闭;
out.println("数据库关闭成功!!");//输出“数据库关闭”;
}
else
{
out.println("密码错误");
st.close();
conn.close();
System.out.println("数据库关闭成功!!");
}
}
else
{
out.println("不存在该用户");
st.close();
conn.close();
System.out.println("数据库关闭成功!!");
}
---------------------------------end
1.如果用户名不正确,那么返回“不存在该用户”,没有问题;
2.如果用户名正确,密码不管正确与否,都返回“密码错误”!!
看来 pw.equals(p) 程序没有识别对,不知何解?
分享到:
- 2009-09-11 13:04
- 浏览 1325
- 评论(1)
- 论坛回复 / 浏览 (1 / 1651)
- 查看更多
相关推荐
用户通过界面输入用户名 和 密码到后台服务器,然后再通过和数据库中的数据比对,判断是否登录成功。 2.1.2商品模块: a.获取商品列表: 用户打开商品首页时,直接调用后端的获取所有商品列表的方法,获取 所有...
在本项目中,我们讨论的是一个基于JAVA WEB的登录系统,该系统采用了JSP技术来构建用户界面,并通过与SQL数据库交互来管理用户账户信息。下面将详细解析这个登录系统的各个方面。 1. **JAVA WEB基础**:JAVA WEB是...
【标题】"简单的web登陆"涉及的是在Java环境中利用JFinal框架开发的一个基础的Web登录功能。JFinal是一个基于Java的高效、极简的Web开发框架,它为开发者提供了便捷的MVC(Model-View-Controller)开发模式,使得...
在初学Java Web开发时,理解页面间的登录跳转机制是非常关键的一部分,它涉及到用户交互、请求处理和响应管理。本文将深入探讨这个主题,帮助新手开发者更好地掌握这一核心技术。 一、HTTP请求与响应基础 Java Web...
Java Web应用可以通过HttpSession接口来管理会话数据。 5. **客户端验证**:在客户端,用户输入的验证码需要与服务器端保存的值进行比对。这通常发生在用户提交表单时,通过Ajax异步请求,将输入的验证码发送到...
在Java Web中,我们可以使用HttpServletRequest对象的getParameters()方法获取POST请求的数据,然后与存储在数据库中的凭证进行比对。为了安全起见,密码通常需要进行哈希处理并存储,而不是明文保存。 2. **授权**...
使用OpenCV、Android和Java Web可以实现一个简单的人脸识别系统,该系统可以通过摄像头实时捕获人脸图像,并进行比对识别,从而实现用户身份认证等应用场景。这个系统可以分为客户端和服务器两个部分。 客户端使用...
在Java Web开发中,AJAX(Asynchronous JavaScript and XML)技术常常被用来增强用户体验,实现页面的异步更新。在这个“Java web ajax 登录”的示例中,我们主要探讨如何利用AJAX技术来构建一个实时验证用户登录...
- **性能优化**:大量数据比对时需考虑性能优化,如分批处理、并行计算等。 - **安全性**:确保对比过程中不会影响到原始数据库,避免使用危险的SQL操作。 - **用户界面**:良好的用户界面设计可以提高用户体验,...
在Java编程中,对比文件夹和文件是一项常见的需求,尤其在文档管理和版本控制中。本篇文章将探讨如何使用Java实现这一功能,特别是针对word、pdf、文本和图片等类型的文件进行对比计算,以及如何计算文本的相似率和...
在JAVA Web中,可以通过生成随机字符串并将其显示在图片上,同时存储该字符串,然后在用户提交时进行比对来实现验证码功能。 4. 用户交互:在留言板系统中,用户通过填写表单(包括姓名、邮箱、留言内容)并点击...
在Java开发中,处理Excel数据是一项常见的任务,特别是在数据导入导出、数据分析或者报表生成的场景下。"java Excel上传 Excel数据处理"这个主题涵盖了如何使用Java来接收并处理Excel文件的关键知识点。以下是对这些...
通过以上知识点的学习和实践,你不仅能掌握Java Web开发的基本技能,还能了解到现代软件工程中的最佳实践,为将来更复杂的项目开发打下坚实基础。在项目实施过程中,你将有机会遇到并解决各种实际问题,这对提升个人...
2. **Tomcat 7**: 作为一个轻量级的Java应用服务器,Tomcat 7用于部署和运行Web应用程序。在这个项目中,它承载了人脸注册和登录的Web服务,处理HTTP请求并返回响应。 3. **Maven**: Maven是Java项目管理工具,用于...
Java Web是一种基于Java技术构建Web...通过这个实例,开发者不仅可以学习到如何在Java Web环境中实现短信验证码登录,还能了解到如何与第三方服务集成、数据存储、安全策略等相关知识,对于提升Web开发技能非常有帮助。
在基于Java的登录系统开发中,我们通常会利用Web技术构建一个B/S(浏览器/服务器)架构的应用,这里提到的框架是基于JSP(JavaServer Pages)和MVC(Model-View-Controller)模式。MVC是一种设计模式,用于分离应用...
如果解密后的数据无效或数据库中不存在匹配的记录,则说明Cookie信息过期或已被篡改,此时应忽略Cookie信息,让用户重新登录。 5. **安全考虑**: - **数据加密**:存储在Cookie中的账号和密码必须进行加密处理,...
java程序编写获取扫码枪扫码程序,并将扫码枪扫码有数据库MySQL数据进行对比预警,解决相关行业使用扫码枪进行出货重复使用相关商品码问题。该程序连接MySQL数据库,可同时部署到多台机器上进行设备比对。底层也实现...
在Java编程领域,用户...以上就是"java语言的用户登录注册"这个项目可能涉及的主要技术点,通过学习和实践这个系统,开发者可以更好地理解和掌握Java编程中的接口设计、数据封装、数据库操作以及安全机制等核心概念。