使用 FTPS 将文件从 Android 传输到服务器 [重复]

2023-11-23

我正在使用Apache Commons FTP 库在我的 Android 应用程序中

我通过 FTPS 建立连接,虽然它可以完美地连接到服务器,但在传输文件时遇到问题。

出于安全原因,订购应用程序的客户端要求在使用 PROT P 时请求数据连接上的 TLS 会话恢复。

因此,我在服务器上启用了此选项:

enter image description here

正如我所说,我可以连接到服务器,但不能传输文件。如果我停用“使用 PROT P 时数据连接时需要 TLS 会话恢复”框,传输将正常进行。

我正在寻找一种使用该库进行文件传输的方法,但没有成功,但是,我明白必须有一种方法。

我给你相关代码的一部分:

TransferImagenesFTP.ftpClient = new FTPSClient();

TransferImagenesFTP.ftpClient.connect(InetAddress.getByName("XXX_XXX_XX_X"), 26);
TransferImagenesFTP.ftpClient.enterLocalPassiveMode();
TransferImagenesFTP.ftpClient.setBufferSize(1024000);
TransferImagenesFTP.ftpClient.login("xxxxxx", "zzzzzz");
TransferImagenesFTP.ftpClient.execPROT("P");
TransferImagenesFTP.ftpClient.type(FTP.BINARY_FILE_TYPE);

我很感激任何帮助,谢谢。


你的情况的问题是Apache FTPS 客户端不支持 TLS 会话恢复,因此当您尝试传输文件时会失败。

了解问题

当您通过 TLS 连接到 FTP 服务器时,服务器会启动安全 SSL 会话与客户在控制连接。然后客户端输入被动模式通过发送PASV命令和响应,服务器打开一个随机非特权端口,并将端口号发送到客户端作为响应。该端口代表数据连接。现在,要安全地连接到这个新端口,客户端必须重用它与服务器上已有的现有 TLS 会话。控制连接.

为什么要重用 TLS 会话?

不需要会话恢复就允许会话窃取攻击。 FTP 的问题在于数据连接不对客户端进行身份验证。
如果服务器/客户端不重用现有的 TLS 会话,攻击者可能会连接到数据端口并上传恶意软件。因此,为了防止此类攻击,FTP 服务器要求客户端重用已建立的会话。

就你而言,Apache FTPS 客户端无法重用会话(这是一个已知问题),因此服务器thinks您的客户未经授权并拒绝转账。

结帐财富前沿帖子关于如何修补和示例实现。

Sources:

  • 财富前线[link]
  • 松弛网站 [link]
  • FileZilla 论坛 [link]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 FTPS 将文件从 Android 传输到服务器 [重复] 的相关文章

随机推荐

  • 在为其他人制作的批处理文件中使用另一种语言(代码页)

    所以我有一个最初是英文的批处理文件工具 我已经翻译成各种其他语言 我的情况是许多语言都使用特殊字符 就我而言 它是德语 所以我可能会用英语 echo Administrative permissions required Detecting
  • 通过C++代码计算时间

    我知道这个问题已经被问过几次了 但没有一个人真正帮助我 所以再问一次 我正在使用 Windows XP 并运行 Visual Studio C 2008 我正在查找的所有代码都使用 time h 但我认为它可能在这里无法正常工作 因为结果让
  • Excel VBA 嵌套字典 - 访问项目

    Tim 是否可以从 clsMatrix 类中提取行键列表 像这样的东西 Sub KEYS Dim KEY LIST As Variant KEY LIST TABLES UDLY dR KEYS End Sub 然后 我可以循环浏览表以提取
  • 我应该如何为C字符串字符数组分配内存?

    因此 在尝试学习如何在 C 中使用 C 字符串时 我遇到了内存分配问题 这里的想法是创建一个格式为 s1 sep s2 的新字符串 我使用的文本提供了标题 因此我无法更改它 但我在尝试设置 char str 的大小时遇到 了问题 我收到一条
  • MS Ribbon/Office UI 许可证值得担心吗? [关闭]

    Closed 这个问题是无关 目前不接受答案 想象一下 我想创建一个与 MS Word 2007 非常相似的应用程序 使用 VS2008 中的 C 和 MFC 功能包 对于功能区 我有 3 个选项 无需获取许可证即可使用 MFC 功能包中的
  • SpeechSynthesizer 的 SpeakProgressEventArgs 是否不准确?

    使用 Net 3 5 中的 System Speech Synthesis SpeechSynthesizer 类 SpeakProgressEventArgs 的 AudioPosition 属性似乎不准确 以下代码产生以下输出 Code
  • Python 夏令时

    如何检查夏令时是否生效 您可以使用time localtime并看看tm isdst返回值中的标志 gt gt gt import time gt gt gt time localtime 2010 5 21 21 48 51 4 141
  • 使用 pygame 旋转图像[重复]

    这个问题在这里已经有答案了 我是 pygame 新手 想要编写一些代码 每 10 秒将图像旋转 90 度 我的代码如下所示 import pygame import time from pygame locals import pygame
  • php中如何判断变量是否为null或未定义

    有没有singlePHP 中可以创建函数来判断变量是 NULL 还是未定义 我将把变量传递给函数 如果需要的话通过引用 但直到运行时我才知道变量的名称 isset and is null 不区分 NULL 和未定义 array key ex
  • 如何在 Linq 中添加两个列表,以便 linkedList[x] = listOne[x] + listTwo[x]?

    我想添加两个数字类型的列表 以便 添加列表 x 列表一 x 列表二 x 列表的输出需要是一个 Generic IEnumerable 我可以在将来的 linq 查询中使用它 虽然我能够使用下面的代码来做到这一点 但我忍不住觉得一定有更好的方
  • 如何理解在 PyTorch 中创建叶张量?

    来自 PyTorch文档 b torch rand 10 requires grad True cuda b is leaf False b was created by the operation that cast a cpu Tens
  • 错误:通用字符名称不完整 \U

    我正在尝试编写一个更改 txt 文件的 C 程序 但是 当我运行它时 我收到一个奇怪的错误 错误 6 20 C Dev Cpp Homework6 cpp 不完整的通用字符名称 U My code include
  • 在 pandas read_csv() 中引用参数

    我在用着pandas read csv 我发现quotechar并引用其中的参数 pandas read csv filepath or buffer sep quotechar quoting 0 这些参数的具体用途是什么 我检查了文档
  • 使用 SearchView 小部件时如何在 RecyclerView 中突出显示过滤后的文本

    如何在 RecyclerView 中突出显示搜索文本结果 我发现了一些关于 Spannable TextView 的帖子 但不确定在我的情况下在哪里实现 感谢您的关注和帮助 主要活动或第 1 章 public class Chapter1
  • 如何在运行时设置活动的父活动?

    我有任意数量的分层嵌套视图 活动 操作栏应显示向上导航按钮 以在任何视图中导航到更高级别 为此 谷歌文档说我必须在活动的 xml 定义中使用标签设置父活动 但是 我正在动态创建活动 并且子元素可以与其父元素具有相同的活动 那么如何在运行时将
  • 将正则表达式选项传递给 PowerShell [regex] 类型

    我使用下面的正则表达式代码捕获两个匹配的组 regex regex 0 9 1 20 b kb mb gb tb matches regex match minSize size int64 matches Groups 1 Value u
  • 在 Android 上使用 addJavascriptInterface() 传递 JavaScript 对象

    是否可以使用 addJavascriptInterface 将 JavaScript 对象从 JavaScript 传递到 Java 沿着这些思路 var javaScriptObject field1 string1 field2 str
  • 十六进制值 0x0B,是 XML 中的无效字符问题

    我遇到异常 十六进制值 0x0B 是无效字符 第 23 行 第 22 号位置 我已经尝试过解决方案Here 但它对我不起作用 由于我的项目是在3 5版本 我无法使用XmlConvert IsXmlChar method MSDN 怎么处理呢
  • 我可以使用一个 HTML5 应用程序控制两个浏览器窗口吗?

    我希望我的 HTML5 应用程序能够绘制到两个不同的屏幕上 这 我认为 意味着我需要有两个不同的浏览器窗口 每个屏幕上一个 这可能吗 看来我真的必须将相同的应用程序加载到两个窗口中 并以某种方式让窗口相互通信 我找不到如何实现此目的的示例
  • 使用 FTPS 将文件从 Android 传输到服务器 [重复]

    这个问题在这里已经有答案了 我正在使用Apache Commons FTP 库在我的 Android 应用程序中 我通过 FTPS 建立连接 虽然它可以完美地连接到服务器 但在传输文件时遇到问题 出于安全原因 订购应用程序的客户端要求在使用