【问题标题】:Image Servlet can access other files alsoImage Servlet 也可以访问其他文件
【发布时间】:2014-07-15 05:39:29
【问题描述】:

我想在 servlet 中显示图像,
有许多复杂的方法,例如

最后我发现这很容易。
我使用了来自 tutorial 的 Image Servlet

更改了 web.xml

<servlet>
 <servlet-name>Image</servlet-name>
 <servlet-class>com.jsos.image.ImageServlet</servlet-class>
 <init-param>
  <param-name>dir</param-name>
  <param-value>C:/Users/myName/Desktop/myName/workspace_j2ee/myServlet/WebContent/images</param-value>
 </init-param>
 <init-param>
  <param-name>expires</param-name>
  <param-value>86400</param-value>
 </init-param>
</servlet> 

我可以使用

成功显示图像
/Myservlet/Image?fileName.png

但问题是这实际上是安全漏洞,正如我所尝试的那样

/Myservlet/Image?../../src/maJavafiles.java

令我惊讶的是,java 文件被下载了。那么如何限制用户将这种 url 我的意思是在目录结构中升级

【问题讨论】:

  • 要解决这个问题,请编写您自己的代码。
  • @ScaryWombat 我不知道你在说什么,仅供参考,我是一名学生,我被这样教过,可能会告诉我应该做的事情会帮助我,而不仅仅是...... .
  • 如果无法访问您发布链接的 jar 中的代码,就无法知道哪里出了问题。它解决的解决方案很简单,可以很容易地自己编写。

标签: java servlets


【解决方案1】:

为了能够进行此类更改,您需要访问 Servlets 源代码。由于您无法更改代码,因此您应该考虑到这个安全问题,从头开始开发此类功能......

你可以使用类似@BalusC servlet for image viewing

【讨论】:

  • 我同意你的信息,但也许这应该是一个评论
  • 感谢您的链接,我很感激您没有批评,而是实际上帮助了我。
  • @HarendraSingh 我认为你没有受到批评。
  • @ScaryWombat 而不是“你到底为什么......”你可以说“......不是一个好的编码习惯,而是你应该......或者参考这个链接”,请记住 Stackoverflow 不适合行业天才,这里的许多用户都是初学者。
  • 你说它是security hole,因为它可以读取你的java文件(不应该在网络服务器上)——我猜是你在批评
猜你喜欢
  • 2023-03-20
  • 2017-08-18
  • 2021-08-17
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
相关资源
最近更新 更多