小妖女 发表于 2015-1-18 11:23:55

JAVA网站制作之JSP毛病年夜不雅

从一个编程语言的普及程度来将,一个好的IDE是至关中要的,而现在的java的IDE虽然已经很好了,但是和.net比起来还是稍微差一些的,这是个客观事实。java要想普及的更好。DE是必须加以改进的。js
  综述:服务器毛病是平安成绩的劈头,黑客对网站的打击也年夜多是从查找对方的毛病入手下手的。以是只要懂得本身的毛病,网站办理职员才干接纳响应的对策,制止外来的打击。上面先容一下一些服务器(包含Web服务器和JSP服务器)的罕见毛病。

  Apache保守重写的恣意文件毛病是怎样回事?

  在Apache1.2和今后的版本中存在一个mod_rewrite模块,它用来指定特别URLS在收集服务器文件体系上所映照的相对路径。假如传送一个包括准确表达参数的重写划定规矩,打击者就能够检察方针主机上的恣意文件。

  上面举例申明重写划定规矩指令(个中第一行只要是包括毛病的):

  RewriteRule/test/(.*)/usr/local/data/test-stuff/$1
  RewriteRule/more-icons/(.*)/icons/$1
  RewriteRule/go/(.*)http://www.apacheweek.com/$1

  受影响的体系:

  1)Apache1.3.12
  2)Apache1.3.11win32
  3)Apache1.2.x

  不受影响体系:Apache1.3.13

  如何办理在HTTP哀求中增加特别字符招致表露JSP源代码文件?
  UnifyeWaveServletExec是一个Java/JavaServlet引擎插件,次要用于WEB服务器,比方:MicrosoftIIS,Apache,NetscapeEnterprise服务器等等。
  当一个HTTP哀求中增加以下字符之一,ServletExec将前往JSP源代码文件。
.

  %2E
  +
  %2B
  
  %5C
  %20
  %00

  乐成的使用该毛病将招致保守指定的JSP文件的源代码,比方:利用上面的恣意一个URL哀求将输入指定的JSP文件的源代码:

  1)http://target/directory/jsp/file.jsp.
  2)http://target/directory/jsp/file.jsp%2E
  3)http://target/directory/jsp/file.jsp+
  4)http://target/directory/jsp/file.jsp%2B
  5)http://target/directory/jsp/file.jsp
  6)http://target/directory/jsp/file.jsp%5C
  7)http://target/directory/jsp/file.jsp%20
  8)http://target/directory/jsp/file.jsp%00

  受影响的体系:

  1)UnifyeWaveServletExec3.0c
  2)SunSolaris8.0
  3)MicrosoftWindows98
  4)MicrosoftWindowsNT4.0
  5)MicrosoftWindowsNT2000
  6)Linuxkernel2.3.x
  7)IBMAIX4.3.2
  8)HPHP-UX11.4

  办理计划:

  假如没有利用任何静态页面或图象,能够设置一个默许的servlet,并将"/"映照到这个默许的servlet。如许当收到一个未映照到某个servlet的URL时,这个默许的servlet就会被挪用。在这类情形下,默许的servlet能够仅仅前往"未找到文件"。假如利用了静态的页面或图象,仍旧能够作如许的设置,可是必要让这个默许的servlet处置对正当的静态页面和图象的哀求。
  另外一种大概就是将*.jsp+、*.jsp.和*.jsp等映照到一个servlet,而该servlet只是前往"未找到文件"。关于*.jsp%00和*.jsp%20如许的情形,映照应以未经编码的情势输出。比方,关于*.jsp%20的映照应输出"*.jsp"。注重%20被转换成一个空格字符。

  Tomcat有哪些毛病?

  Tomcat3.1存在表露网站路径成绩

  Tomcat3.1是在Apache软件情况下开辟的一个撑持JSP1.1和Servlets2.2的软件。它存在一个平安成绩当发送一个不存在的jsp哀求时会表露网站上彀页的全路径。

  举例:
  http://narco.guerrilla.sucks.co:8080/anything.jsp

  了局显现:
Error:404
Location:/anything.jsp
JSPfile"/appsrv2/jakarta-tomcat/webapps/ROOT/anything.jsp"notfound

  办理计划:晋级到新版本

  Tomcat表露JSP文件内容

  JavaServerPages(JSP)范例的文件是以.jsp扩大名在Tomcat上注册,Tomcat是文件名巨细写敏感的,.jsp和.JSP是分歧范例的文件扩大名。假如提交有.JSP的链接给Tomcat,而Tomcat找不到.JSP就会以默许的.text文件范例来呼应哀求。由于在NT体系中巨细写文件名长短敏感的,以是被哀求的文件会以文本的情势送出。

  假如在UNIX服务器上会呈现"filenotfound"的毛病信息。

  怎样在windows下对Tomcat实行代码回护

  Tomcat的一些版本有保守源代码的毛病,假如在扫瞄器中挪用JSP页面时将该文件的后缀改成年夜写,这个JSP文件的源代码将完整输入到扫瞄器中(大概扫瞄器窗口中甚么都没有,这时候你只需检察HTML源文件就能够发明)。云云一来,网站的源代码是否是城市表露在互联网上那?
  不必忧虑,办理办法很复杂,把各类后缀的组合全体写到Tomcat_Homeconfweb.xml里就能够了,如许Tomcat会将分歧后缀名的JSP分隔看待,就不会保守代码了。


    jsp
    *.jsp


    jsP
    *.jsP


   ?lt;servlet-name>jSp
    *.jSp


    jSP
    *.jSP


    Jsp
    *.Jsp


    JsP
    *.JsP


    JSp
    *.JSp


    JSP
    *.JSP


  AllairJrun毛病有哪些毛病?

  AllairJRUN不法读取WEB-INF毛病
  在Allaire的JRUN服务器2.3版本中存在一个严峻的平安毛病。它同意一个打击者在JRun3.0服务器中检察WEB-INF目次。
  假如用户在提交URL哀求时在,经由过程附加一个"/"使该URL成为畸形的URL,这时候WEB-INF下的一切子目次将会表露出来。打击者奇妙的使用该毛病将可以远程取得方针主机体系中WEB-INF目次下的一切文件的读取权限。
  比方利用上面这个URL将会表露WEB-INF下的一切文件:
http://site.running.jrun:8100//WEB-INF/

  受影响的体系:AllaireJRun3.0

  办理计划:下载并安装补钉:

Allairepatchjr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows95/98/NT/2000andWindowsNTAlpha
Allairepatchjr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linuxpatch-GNUgzip/tar

  AllaireJRUN2.3检察恣意文件毛病

  Allaire的JRUN服务器2.3上存在多重显现代码毛病。该毛病同意打击者在WEB服务器上检察根目次下的恣意文件的源代码。
  JRun2.3利用JavaServlets剖析林林总总范例的页面(比方:HTML,JSP等等)。基于rules.properties和servlets.properties的文件设置,大概使用URL前缀"/servlet/"挪用任何servlet。
  它大概利用Jrun的SSIFilterservlet在方针体系上检索恣意的文件。以下2个例子显现出能被用来检索恣意的文件的URLs:

http://jrun:8000/servlet/com.livesoftware.jrun.plugins.ssi.SSIFilter/../../test.jsp
http://jrun:8000/servlet/com.livesoftware.jrun.plugins.ssi.SSIFilter/../../../../../../../boot.ini
http://jrun:8000/servlet/com.livesoftware.jrun.plugins.ssi.SSIFilter/../../../../../../../winnt/repair/sam
http://jrun:8000/servlet/ssifilter/../../test.jsp
http://jrun:8000/servlet/ssifilter/../../../../../../../boot.ini
http://jrun:8000/servlet/ssifilter/../../../../../../../winnt/repair/sam._

  注重:假定JRun在主机"jrun"上运转,端口8000。

  受影响的体系:AllaireJRun2.3.x

  办理计划:下载并安装补钉:

Allairepatchjr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows95/98/NT/2000andWindowsNTAlpha
Allairepatchjr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linuxpatch-GNUgzip/tar

  AllaireJRUN2.3远程实行恣意命令毛病

  Allaire的JRUN服务器2.3上存在一个平安毛病,同意远程用户把在WEB服务器上的恣意文件作为JSP代码编译/实行。  假如URL哀求的方针文件利用了前缀"/servlet/",则JSP注释实行功效被激活。这时候在用户哀求的方针文件路径中利用"../",就有大概会见到WEB服务器上根目次之外的文件。在方针主机上使用该毛病哀求用户输出发生的一个文件,将严峻威逼到方针主机体系的平安。

  比方:

http://jrun:8000/servlet/com.livesoftware.jrun.plugins.jsp.JSP/../../path/to/temp.txt
http://jrun:8000/servlet/jsp/../../path/to/temp.txt

  受影响的体系:AllaireJRun2.3.x

  办理计划:下载并安装补钉:

Allairepatchjr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows95/98/NT/2000andWindowsNTAlpha
Allairepatchjr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linuxpatch-GNUgzip/tar

  JRun2.3.x典范文件表露站点平安信息

  JRun2.3.x在JRUN_HOME/servlets目次下有一些servlet典范文件,这个目次是JRun2.3.x用于加载和实行servlets文件。一切扩大名为".Java"或"class"的文件必需被删除,这是由于这些文件会表露站点的平安信息。比方:
http://www.xxx.xxx/servlet/SessionServlet会表露以后服务器坚持的HTTP毗连信息。JRUN_HOME/jsm-default/services/jws/htdocs目次下的内容也应被删撤除。这个目次保留有演示服务器功效的.jsp文件,个中一些文件扳连到会见服务器文件体系和表露服务器设置的成绩。比方对文件"viewsource.jsp"的路径反省是默许封闭的,它可被用于会见服务器文件体系。

  办理计划:

  1)安装2.3.3servicepack
  2)从服务器上删除一切的申明文档、演示编码、典范和课本,包含安装JRun  2.3.x时寄存于JRUN_HOME/servlets目次和JRUN_HOME/jsm-default/services/jws/htdocs目次里的文档。
  相干站点:http://www.allaire.com/

  IBMWebSphereApplicationServer有哪些毛病?

  1、IBMWebSphereApplicationServer3.0.2存在表露源代码毛病
IBMWebSphereApplicationServer同意打击者检察Webserver根目次以上的一切文件。IBMWebSphere利用JavaServlets处置多种页面范例的剖析(如HTML,JSP,JHTML,等等)。Inaddition分歧的servlets对分歧的页面举行处置,假如一个哀求的文件是未举行注册办理的,WebSphere会利用一个默许的servlet作挪用。假如文件路径以"/servlet/file/"作开首这个默许的servlet会被挪用这个哀求的文件会未被剖析或编译就显现出来。

  受影响体系:IBMWebSphere3.0.2的一切版本

  举例:

  假如一个哀求文件的URL为"login.jsp"::  http://site.running.websphere/login.jsp那末会见  http://site.running.websphere/servlet/file/login.jsp将看到这个文件的源代码。
  办理计划:下载并安装补钉
http://www-4.ibm.com/software/webservers/appserv/efix.html
  相干站点:http://www-4.ibm.com/software/webservers/appserv/
  IBMWebSphereApplicationServer表露JSP文件内容
  JavaServerPages(JSP)范例的文件是以.jsp扩大名在WebSphereApplicationServe上注册,WebSphere是文件名巨细写敏感的,.jsp和.JSP是分歧范例的文件扩大名。假如提交有.JSP的链接给WebSphere,而WebSphere找不到.JSP就会以默许的.text文件范例来呼应哀求。由于在NT体系中巨细写文件名长短敏感的,以是被哀求的文件会以文本的情势送出。

  假如在UNIX服务器上会呈现"filenotfound"的毛病信息。

  办理计划:点击此处下载补钉
  相干站点:http://www-4.ibm.com/software/webservers/appserv/efix.html
  BEAWebLogic有哪些表露源代码毛病?

  受影响版本:

  一切体系上的

  BEAWebLogicEnterprise5.1.x
  BEAWebLogicServerandExpress5.1.x
  BEAWebLogicServerandExpress4.5.x
  BEAWebLogicServerandExpress4.0.x
  BEAWebLogicServerandExpress3.1.8

  这个毛病使打击者能读取Web目次下一切文件的源代码。

  WebLogic依附四个次要JavaServletsto服务分歧范例的文件。这些servlets是:

  1)FileServlet-for复杂HTML页面
  2)SSIServlet-forServerSideIncludes页面
  3)PageCompileServlet-forJHTML页面
  4)JSPServlet-forJavaServer页面

  看着weblogic.properties文件,这儿是各个servlets的注册值:

  1)weblogic.httpd.register.file=weblogic.servlet.FileServlet
  2)weblogic.httpd.register.*.shtml=weblogic.servlet.ServerSideIncludeServlet
  3)weblogic.httpd.register.*.jhtml=weblogic.servlet.jhtmlc.PageCompileServlet
  4)weblogic.httpd.register.*.jsp=weblogic.servlet.JSPServlet
更多的weblogic.properties文件,假如一个哀求文件是没有注册办理的,那末就会挪用一个默许的servlet。以下是展现默许的servlet是怎样注册的。

  #Defaultservletregistration
  #------------------------------------------------
  #Virtualnameofthedefaultservletifnomatchingservlet
  #isfoundweblogic.httpd.defaultServlet=file

  因而假如URL中的文件路径开首为"/file/",将会引致WebLogic挪用默许的servlet,那将会使网页未加剖析和编译而间接显现。

  论证:

  只需在想看的文件本来的URL路径之前到场"/file/"就会让文件未经剖析和编译,间接表露源代码。如:http://site.running.weblogic/login.jsp,那末只需会见http://site.running.weblogic/file/login.jsp就会在WEB扫瞄器里看到文件的内容。

  以下是利用办法:

  1.经由过程强迫利用SSIServlet检察未剖析的页面:
  服务器站点经由过程WebLogic中的SSIServlet处置页面,它在weblogic.properties文件中注册以下信息:weblogic.httpd.register.*.shtml=weblogic.servlet.ServerSideIncludeServlet

  经由过程URL利用SSIServlet主动处置通配符(*)。因而假如文件路径开首为/*.shtml/,将强迫文件由SSIServlet处置。假如利用别的文件范例如.jsp和.jhtml,就可以检察未剖析的jsp和jhtml代码。举例:http://www.xxx.com/*.shtml/login.jsp

  2.经由过程强迫利用FileServlet检察未剖析的页面:
  WebLogic利用FileServlet设置ConsoleHelpservlet,在weblogic.properties文件的以下内容可得知:

#ForConsolehelp.Donotmodify.
weblogic.httpd.register.ConsoleHelp=weblogic.servlet.FileServlet
weblogic.httpd.initArgs.ConsoleHelp=defaultFilename=/weblogic/admin/help/NoContent.html
weblogic.allow.execute.weblogic.servlet.ConsoleHelp=everyone

  因而假如文件路径以/ConsoleHelp/开首将招致WebLogic利用FileServlet,使未剖析或编译的文件作页面显现出来,举例:http://www.xxx.com/ConsoleHelp/login.jsp

  办理计划:
  不要利用示例中的设置办法设置FileServlet。这大概会让你的JSP/JHTML文件的源代码表露出来。请检察在线文档:
  http://www.weblogic.com/docs51/admindocs/http.html#file

  示例的registrations以下:
  weblogic.httpd.register.file=weblogic.servlet.FileServlet
  weblogic.httpd.initArgs.file=defaultFilename=index.html
  weblogic.httpd.defaultServlet=file

  有两种办法能够制止这个成绩:

  (1)注册那些文件servlet利用随机用户名,加年夜推测难度。比方利用象如许注册文件servlet为12foo34:
  weblogic.httpd.register.12foo34=weblogic.servlet.FileServlet
  weblogic.httpd.initArgs.12foo34=defaultFilename=index.html
  weblogic.httpd.defaultServlet=12foo34

  (2)注册文件servlet利用wildcards声明你将利用一切这些文件扩大名作服务。举例注册文件servlet为.html文件服务:
  weblogic.httpd.register.*.html=weblogic.servlet.FileServlet
  weblogic.httpd.initArgs.*.html=defaultFilename=index.html
  weblogic.httpd.defaultServlet=*.html

  利用下面的办法反复到场以下范例的文件*.gif,*.jpg,*.pdf,*.txt,etc.
  注重:这些信息是备有证实在BEAWebLogicServerandExpress申明档的:http://www.weblogic.com/docs51/admindocs/lockdown.html
  另:请寄望新版本并晋级吧。



再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。

再见西城 发表于 2015-1-20 23:51:52

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

深爱那片海 发表于 2015-1-21 17:26:15

是一种为 Internet发展的计算机语言

第二个灵魂 发表于 2015-1-30 21:31:24

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

愤怒的大鸟 发表于 2015-2-6 16:02:45

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

爱飞 发表于 2015-2-7 01:01:09

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

若相依 发表于 2015-2-9 08:13:29

是一种语言,用以产生「小应用程序(Applet(s))

透明 发表于 2015-2-10 20:19:14

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

精灵巫婆 发表于 2015-2-23 20:04:36

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

兰色精灵 发表于 2015-3-11 08:54:07

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

变相怪杰 发表于 2015-3-11 17:17:42

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

小魔女 发表于 2015-3-13 02:08:59

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

简单生活 发表于 2015-3-20 09:51:06

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

只想知道 发表于 2015-4-14 07:10:11

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
页: [1]
查看完整版本: JAVA网站制作之JSP毛病年夜不雅