有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中,安全性是否需要知道服务器文件目录结构?

我试图访问服务器上的远程文件只是为了学习

我的服务器很简单,如下所示:

  1. 这是一个基本的SpringMVC项目
  2. 它显示一个索引。打印“HelloWorld”和当前服务器时间的html

我想做的是:

  1. 访问URL(例如,http://192.168.0.1:8080/test
  2. 查找索引的绝对路径。服务器上某处的html(远程文件)
  3. 打开并编辑“HelloWorld”至“嗨,John!”

我已经尝试使用HttpUrlConnection,但该类的方法与我的目的不匹配。 第二次尝试是使用File类。我将URI实例放在文件中,但URI只处理“File://”协议

如何更改远程服务器计算机上的文本


共 (2) 个答案

  1. # 1 楼答案

    基本上,我可以告诉你3其中2个不使用代码的可能方式:

    1. 使用SSH访问服务器,并使用Favority shell文本编辑器(例如vi、nano等)更改index.html
    2. 使用SFTP访问服务器的文件系统,并用包含新字符串的新版本覆盖index.html
    3. 在服务器上创建一个REST接口,允许您更改文件内容。这一个需要编码,我不知道工作量是否真的符合你的目的

    编辑:

    您似乎希望在不与远程服务器进行任何“交互”的情况下更改远程文件,比如REST接口或其他什么。如果这是如此容易做到的话,它将给系统带来巨大的安全漏洞。因此,您总是需要服务器的交互,例如通过REST接口或类似的方式。你不能只是键入一些Java代码,然后神奇地修改远程文件。使用Java可以做的唯一一件事是通过sshHTTP访问服务器,并利用远程服务器提供的功能。这意味着您必须始终在服务器端做一些工作,才能进行这样的修改

  2. # 2 楼答案

    我希望以下几点能给你一些帮助来实现你想要的:

    • 不应在应用程序中修改服务器资源文件
    • 相反,使用模板(参见Freemarker)生成不同版本的索引。html文件
    • 您要显示的内容(“Hello world”或“Hi,John”)应该从数据库(MySQL、PostgreSQL、MongoDB或其他任何数据库)中读取
    • 如果调用者必须修改服务器内容,它应该将POST请求中的内容传递给远程服务器,然后远程服务器将其保存在数据库中或通过模板直接显示

    但是,如果出于某些原因(我不知道您的要求),您必须访问文件资源,您可以在(远程)控制器类中使用servlet API方法:

    getServletContext().getRealPath("/index.html")!
    

    这将为您提供索引文件的引用(如果您的应用程序未打包为WAR!)。同样,请记住,不建议随意处理服务器资源文件

    编辑

    如果您不能更改远程服务器应用程序,必须使用客户端java,请考虑使用FTP或FTPS客户端:Commons net。p>