为什么同样的程序,从windows移植到linux下就抱错???

tklqa 2005-07-09 05:07:25
windows下用的是tomcat3.1,程序运行正常。linux下用的是tomcat5.0.1,配置启动没有问题,显示静态页面没有任何问题,但是一要进入数据库验证就抱错???charset=GBK,改成utf-8也没用。

apache的错误内容是:
HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /webadmin/verify.jsp(3,0) The value for the useBean class attribute research.opendb1 is invalid.
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:150)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1227)
org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Generator.generate(Generator.java:3272)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:244)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:495)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:476)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:464)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.30 logs.

verify.jsp的内容是:
<%@page contentType="text/html;charset=GBK" %>
<%@page import="java.sql.ResultSet"%>
<jsp:useBean id="userlogin" class="research.opendb1"/>

<%
String login="false";
String NAME="";
String SORT="";
String username=request.getParameter("username");
String password=request.getParameter("password");
String sql="select * from guanli where NAME='"+username+"' and PASSWORD='"+password+"'";
try{
ResultSet rs=userlogin.executeQuery(sql);
while(rs.next())
{login="true";
NAME=rs.getString("NAME").trim();
SORT=rs.getString("SORT").trim();
}
if("true".equals(login))
{
session.setAttribute("NAME",NAME);
session.setAttribute("SORT",SORT);
//session.setAttribute("type",usertype);
response.sendRedirect("main.jsp");
}
else
{
out.println("<p><p><p align='center'><i><font color=#cc9966 size=3>用户名、密码有错,请重新输入.</font></i><p>");
out.println("<p align='center'><i><font color=#cc9966>〖<a href='index.jsp'>返 回</a>〗</font></i>");
}
}catch(Exception e){out.println("<p><p><p align='center'><i><font color=#cc9966 size=3>系统维护中,请稍后重试!</font></i><p>");
out.println("<p align='center'><i><font color=#cc9966>〖<a href='index.jsp'>返 回</a>〗</font></i>");
}
finally{userlogin.close();}

%>
...全文
346 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
alpha15 2005-07-12
  • 打赏
  • 举报
回复
其实要看具体情况
如果程序过滤了单引号和脚本的输入的话用这种sql注入攻击的方法是行不通的
当然最好使用PreparedStatement
henbane 2005-07-12
  • 打赏
  • 举报
回复
最前面楼上说的可能性最大,你的BEAN会不会没放好?
zhouyunlong 2005-07-12
  • 打赏
  • 举报
回复
这样的登录条件还有人在写,真是要命。
username = 任意字符
password = 00 or '1' = '1
---------------------------------
我怎么破不了呢?用户名用的是任意的,密码用00 or '1' = '1都不行,谁告诉我具体怎么能破解呢???
如果真能破解。怎么才能避免呢?
---------------------------------
顺便说一下,问题解决了,谢谢大家,在linux中,jdk不会把自动*.java解释成class。需要手动编译一次。一会儿给大家送分!!!
---------------------------------
select * from guanli where name = 'aaaa' and password = '00' or '1' = '1'

这个select你执行试试。
laughsmile 2005-07-12
  • 打赏
  • 举报
回复
试试' or '1'='1
tklqa 2005-07-12
  • 打赏
  • 举报
回复
这样的登录条件还有人在写,真是要命。
username = 任意字符
password = 00 or '1' = '1
---------------------------------
我怎么破不了呢?用户名用的是任意的,密码用00 or '1' = '1都不行,谁告诉我具体怎么能破解呢???
如果真能破解。怎么才能避免呢?
---------------------------------
顺便说一下,问题解决了,谢谢大家,在linux中,jdk不会把自动*.java解释成class。需要手动编译一次。一会儿给大家送分!!!
off_line 2005-07-11
  • 打赏
  • 举报
回复
明显的是research.opendb1没找到,把class目录直接加到Classpath里吧
zhouyunlong 2005-07-11
  • 打赏
  • 举报
回复
先写一个空白的jsp,看看能不能正常解释。
zhouyunlong 2005-07-11
  • 打赏
  • 举报
回复
嗯?楼上的意思是?不懂
---------------------
就是按我写的方式填写用户名和密码,
就可以进入系统。
DanielYWoo 2005-07-11
  • 打赏
  • 举报
回复
嗯?楼上的意思是?不懂
------------------

SQL Injection hack, 你的login根本就是没用的,随便就被攻破
phiney_p 2005-07-11
  • 打赏
  • 举报
回复
不懂...
tklqa 2005-07-11
  • 打赏
  • 举报
回复
嗯?楼上的意思是?不懂
zhouyunlong 2005-07-10
  • 打赏
  • 举报
回复
String sql="select * from guanli where NAME='"+username+"' and PASSWORD='"+password+"'";

这样的登录条件还有人在写,真是要命。
username = 任意字符
password = 00 or '1' = '1
tklqa 2005-07-10
  • 打赏
  • 举报
回复
A:机器现在是linux,正在跑mysql,
B:机器是windows连接A的数据库没有问题,我把windows的程序放到linux上,连接自己local难道会出问题
laughsmile 2005-07-10
  • 打赏
  • 举报
回复
你首先要确定是否在linux下连接上了数据库
foringlove 2005-07-10
  • 打赏
  • 举报
回复
是不是JDK的问题?Windows跟Linux下的JDK是不同的吧
tklqa 2005-07-10
  • 打赏
  • 举报
回复
opendb1在根目录的WEB-INF\classes\research\目录里,而且这段程序在windows下运行很长时间没问题,我只是想要移植到linux下的时候,同样的程序就不能连接数据库
laughsmile 2005-07-09
  • 打赏
  • 举报
回复
你先把所有其它代码屏蔽掉,只留下:
<jsp:useBean id="userlogin" class="research.opendb1"/>
try{
ResultSet rs=userlogin.executeQuery(sql);
...
}catch(){}
看是否有问题
kingfish 2005-07-09
  • 打赏
  • 举报
回复
<jsp:useBean id="userlogin" class="research.opendb1"/>
class都在相应的目录下吗?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧