讨论有关JSP安全问题!(高分,不够再开贴给分)

fastzch 2004-11-23 05:26:10
我前两天一直在思考这样一个问题:用JSP语言来写关于数据库方面的东东的时候,我们会在源码中写入一些调用DB的语句,如:
Class.forName("org.gjt.mm.mysql.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/DBname?"
+"user=username&password=pass&useUnicode=true&characterEncoding=gb2312");
那么我就在想,如果可以得到么网站的源代码的话,那我们不是可以轻而易举的去访问其DB了?

于是我找了一个用JSP实现的网站,然后用FLASHGET来下载这个源文件,如
http://www.cnjsp.org/view.jsp
当我在FLASHGET下载的时候,得到的却是一个Error.jsp(我将这个文件的源码附贴在下面)。
我也尝试过用offline explorer这样的工具还下载整站的代码,当然得到的也只是几个HTML文件和图片文件,还有error.jsp文件。

问题:
1、CNJSP网站用的JSP平台是什么?是TOMCAT还是WEBLOGIC之类?它们是不是都具有这样的保护功能?谁能帮我解释一下或者是给我一些关于这种功能的实现技术或资料?
2、如果这样的技术是由于我的误解,那么有什么办法来下载某JSP实现的网站的整站源码?又有什么办法来保护源码不被别人下载?
3、JSP如何来保护数据及DB的安全?

声明:请大家不要随便去攻击某一站点,我这里只是为了讨论安全技术,由此贴引起的对CNJSP网站的一切其他后果,本人概不负责。


附:
Error.jsp源码(好像也就是一个HTML页面):

<HTML><HEAD><TITLE>CnJSP - 中国JSP技术网站</TITLE>
<META content="text/html; charset=GBK" http-equiv=Content-Type><LINK
href="/cnjsporg.css" rel=stylesheet type=text/css>
<META content="MSHTML 5.00.3700.6699" name=GENERATOR></HEAD>
<BODY bgColor=white text=black><A name=top>
<TABLE border=0 cellPadding=0 cellSpacing=0 class=masthead width="100%">
<TBODY>
<TR>
<TD align=left><A href="/">CnJSP.org</A> </TD>
<TD align=right><A
href="http://www.cnjsp.com">Service</A> <SPAN
class=mark>:::</SPAN><A
href="http://www.cnjsp.org/cnjbb/">Forum</A> <SPAN
class=mark>:::</SPAN> <A
href="/search/">Search</A> <SPAN
class=mark>:::</SPAN> <A
href="/daily/"><B>daily
Java-URL!</B></A> </TD></TR></TBODY></TABLE>

<TABLE border=0 cellPadding=0 cellSpacing=0 width="100%">
<TBODY>
<TR>
<TD vAlign=top width=120>
<DIV class=browser><!-- site.makebrowser -->
<TABLE border=0 cellPadding=2 cellSpacing=0 class=browser width=140>
<TBODY>
<TR>
<TD class=browser colSpan=4 nowrap><A
href="/">Home | 首页</A></TD></TR>

<TR>
<TD class=browser colSpan=4 nowrap><A
href="/news">Java News | 新闻</A></TD></TR>

<TR>
<TD class=browser colSpan=4 nowrap><B><A
href="/document">Documents | 文档</A></B></TD></TR>

<TR>
<TD class=browser colSpan=4 nowrap><A
href="/code">Source Code | 代码</A></TD></TR>

<TR>
<TD class=browser colSpan=4 nowrap><A
href="/download">Downloads | 下载</A></TD></TR>

<TR>
<TD class=browser colSpan=4 nowrap><A
href="/aboutus">About Us | 关于我们</A></TD></TR>

<TR>
<TD class=browser colSpan=4 nowrap><A
href="/search">Search | 搜索</A></TD></TR>

</TBODY></TABLE></DIV></TD>
<TD width=10> </TD>
<TD class=grid width=2><IMG alt="" border=0
src="images/blank.gif"></TD>
<TD width=10> </TD>
<TD vAlign=top>
<H1 class=title>Error</H1>
<DIV class=pad>
您要查看的信息没找到!
</DIV></TD></TR></TBODY></TABLE>
<hr align="center" color="#3399ff" width="100%" >
<table cellpadding="0" cellspacing="0" border="0" width="100%" bgcolor="#FFFFFF" align="center">
<tr><td height="20"></td></tr>
<tr><td height="18" align="center">
<font face="宋体"><a class="f" href="/aboutus/">网站简介</a> | <a class="f" href="#">用户注册</a> | <a class="f" href="/adservices.jsp">广告服务</a> | <a class="f" href="JavaScript:vhost()">虚拟主机</a> | <a class="f" href="mailto:webmaster@cnjsp.com">站务联系</a> | <a class="f" href="/siteguide.jsp">站点导航</a> | <a class="f" href="/nolaw.jsp">免责申明</a> | <a class="f" href="/friend.jsp">合作链接</a></font></td></tr>
<tr><td colspan="3" align="center">
<table border="0" align="center" class="9pt">
<tr><td align="right" rowspan="2"><img src="/images/logo.gif" border="0"></td>
<td height="18"><font face="verdana, arial, helvetica">Copyright © 2000 - 2003 CnJSP, All Rights Reserved</font></td></tr>
<tr><td height="18"><font face="宋体">版权所有 <a class="f" href="http://www.cnjsp.org">中国JSP技术网站</a></font></td></tr>
</td></tr></table>
<!--<tr><td align="center">
<br>
<a href="http://www.cnjsp.org" title="中国JSP技术网站... http://www.cnjsp.org"><img border="0" src="/images/logo.jpg" height="60"></a>
<br><br>
</td></tr>-->
</table>
</BODY></HTML>
<Script language="JavaScript">
function vhost() {
window.open("/vhost.html","vhost","toolbar=0,scrollbars=0,resizable=0,top=20px,left=50px,width=480px,height=500px");
}
</Script>
...全文
161 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
fastzch 2004-11-26
  • 打赏
  • 举报
回复
看来以后想要源码基本上是不可能的了。当然不排除HACKER手段。
wumingwangzi 2004-11-24
  • 打赏
  • 举报
回复
记得旧版本iis好像有漏洞可以看asp源码,新版本好像修补了
fastzch 2004-11-24
  • 打赏
  • 举报
回复
首先感谢大家对我的支持!
先来回答 gougou606(狗狗) 的问题,小类社区就在导航栏中选择,然后就可以提问了。

其实关于JSP的一些安全方面的措施,我也多少了解一些(包括JSP采用Servlet和JavaBeans技术,这样可以方便的封装对于DB的操作),现在想来,只是觉得当初认为可以用一些客户端程序得到别人JSP源码的想法有些幼稚。

这些问题我已经基本明白,上面有位兄弟说,这就是JSP取代ASP的原因,我不禁要问:那是不是ASP就存在这样的隐患呢???
fengliu212 2004-11-23
  • 打赏
  • 举报
回复
那位后来者 能不能回答详细点
gougou606 2004-11-23
  • 打赏
  • 举报
回复
我想问问,我没有找到在哪里发新贴,请大家帮帮忙,他说要提问请到小类社区 但我就是没有找到!!!
梦想家起飞 2004-11-23
  • 打赏
  • 举报
回复
楼主过虑了。:)
zyg158 2004-11-23
  • 打赏
  • 举报
回复
学习:class文件不是能被反编译吗?用JavaBean是不是更安全?
drugon 2004-11-23
  • 打赏
  • 举报
回复
把连接写成一个文件,单独存放,别人就得不到了,也就是写成JavaBean。
VincentSailing 2004-11-23
  • 打赏
  • 举报
回复
其实这就是为什么jsp和asp取代html的原因!毕竟,现在还没有哪个网站说用html连接数据库吧!
至于怎么获取其中的源码由于牵扯到网络安全方面的问题,和CnJSP的利益。在这里就不多提了!
okitgo 2004-11-23
  • 打赏
  • 举报
回复
看不到源码的
只能看到解释出来的html
peterbarry 2004-11-23
  • 打赏
  • 举报
回复
这个应该就是“iserrorpage”指定的页面
MYLiao 2004-11-23
  • 打赏
  • 举报
回复
一般来说,涉及数据库的东西别人是不会放在网页上的,不是放在组件中,就是放在EJB中,你是很难看到其源代码的,JSP页本身是个Servlet,他是经过服务器运行后再将其html代码显示出来,所以FlashGet根本不可能获得服务器源代码的
xzhenbo 2004-11-23
  • 打赏
  • 举报
回复
申请JSP页面时,会先由服务器解释以后再会发送给用户,所以不管你是直接在浏览器里输入还是用另的下载软件得到的都是一样的解释过的页面。
而一般的网站在JSP页面里都会加入安全设置代码,这样当你不是正常进入的话它就会直接跳转到一个页面,一般会是ERROR页面。这就是你会得到ERROR页面的原因了。而HTML页面则没有这个限制,它会被直接DOWN下来。
其实对于JSP中写入调用DB的语句,更好的做法是把调用DB的语句封装在CLASS里,JSP里面只要通过接口调用CLASS来得到数据就好了,这样即使有人得到的你的JSP源码,他还需要能够破解你的CLASS才能看到你的数据库的资料。
Bluecatr 2004-11-23
  • 打赏
  • 举报
回复
另外所谓保护手段,主要是通过服务器安全配置和在jsp文件访问权限上进行控制(通过编程手段处理,如:是否是授权用户)

这个网站的web服务器它用的是Apache2.0.49,unix系统吧,通过输入简单的错误页面就可以看到了,其它的信息你就自己再想办法测,其实这个也是这个网站的安全没做好啊
ChDw 2004-11-23
  • 打赏
  • 举报
回复
首先,FlashGet是根本不可能获得源代码的!(除非你利用网站的Bug)

FlashGet做的东西仅仅是模拟IE的访问操作去访问这个JSP,而服务器只要碰到通过HTTP访问JSP就自动开始执行JSP中的代码并且返回结果到客户端中

对服务器来说,根本无法区分IE与FlashGet之间的区别!
它都只是认为:“哦,有人请求访问这个JSP,我需要执行这个JSP并返回结果。”
Bluecatr 2004-11-23
  • 打赏
  • 举报
回复
通过普通软件用下载的方式下载动态页面得到的都是经过服务器处理过,然后返回给你所看到的页面。

flashget访问那个网站,也是和普通浏览器访问这个网站一样,是通过get,post来和该网站对话的,你直接用浏览器访问http://www.cnjsp.org/view.jsp,得到的还是那个error.jsp,而且你所看到的error.jsp,并不是它真正的源码,而是经过服务器处理过的(其中不会有任何java相关的代码),要想弄到别人真正的源码要通过非常规手段才能弄到啊,呵呵....
lijunjiejava 2004-11-23
  • 打赏
  • 举报
回复
看不到源码的
只能看到解释出来的html

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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