如何保护通过HTTP请求发送的值?

德米特里·雷宾(Dmitriy Ryabin):

我正在开发一种实现REST API的微服务。它是将某些文件形成一个共享的网络位置,并将其上传到FTP服务器。

这是一个示例代码:

      @RequestMapping(method = RequestMethod.GET, value = "/ftpProcess", produces = "text/plain")
public String ftpFiles() throws UnknownHostException {
    String status = "" ;

    JSch jsch = new JSch();
    Session session = null;
    try {
        session = jsch.getSession("ftpUserName", "ftpHost", 10022);
        session.setConfig("StrictHostKeyChecking", "no");
        session.setPassword("ftpPassword");
        session.connect();

        Channel channel = session.openChannel("sftp");
        channel.connect();
        ChannelSftp sftpChannel = (ChannelSftp) channel;

 //Just an example - I wull upload 4 dummy files       
 for(int i=1; i<4; i++) {
            sftpChannel.put(/*Here I navigate to a file, and repeat it 3 times for 3 different files*/);
        }                     
        sftpChannel.exit();
        session.disconnect();


        status = "SUCCSSES" ;
    } 

在实际的应用程序中,我可能具有不同的ftpServer / host,用户名和密码,因此必须将它们作为参数输入。我知道我可以使用@PathVariable或@parameters进行操作-通过HTTP GET进行操作,但是这样每个人都会看到传递的内容。

我如何传递输入信息,使其保持秘密?

加布里埃尔·罗巴伊娜(Gabriel Robaina):

通常,当您处理由HTTP请求触发的微服务时,POST请求是确保发送信息安全的方法。

如您在此处所了解的那样,在POST请求上,数据是在请求正文中发送的,而不是作为参数发送的。在POST正文中,数据应格式化为JSON(键:值对),其结构应与方法接收的对象作为参数匹配。例如:

@RequestMapping(method = RequestMethod.POST, value = "/ftpProcess", produces = "text/plain")
    public String ftpFiles(@RequestBody ExampleObject jsonObject){
        return null;
    }

例如:

JSON主体上的每个键值都必须具有被引用的属性jsonObject,以便在反序列化时自动设置相应的值。

您始终可以使用Postman之类的工具通过编辑POST请求的正文并将其发送到服务器上的相应端点来测试POST(或公平的请求)请求。

例如,如果您有一个像这样的对象:

public class ExampleObject {

    private String valueA;

    private String valueB;
}

您可以像这样将POST发送到端点。当请求到达服务器上的端点时,您的ExampleObject将设置其属性,就像在JSON正文中指定的那样。

这个

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章