使用 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 传输到服务器 [重复] 的相关文章

  • 尝试使用 FileProvider(Android) 获取 URI 时出现 NullPointerException [重复]

    这个问题在这里已经有答案了 我想在单击按钮后拍照 但我越来越NullPointerException当试图得到URI with FileProvider 这是我的错误代码 Caused by java lang NullPointerExc
  • Android AsyncTask onPreExecute 未不确定地调用

    我有一个 AsyncTask 它应该在通过互联网上传一些内容时显示进度条 有时它就像一个魅力 有时它不显示任何进度条 这是代码 public class Upload extends AsyncTask
  • 小米和oppo等中国ROM上的工作管理器,在电池优化时,将工作的计划延迟增加几个小时

    小米和 Oppo 等中国 ROM 上的工作管理器在进行电池优化时 会将计划的工作延迟增加几个小时 但是 我注意到一些应用程序即使在电池优化下也能够让计划的作业安静地完美运行 我注意到的一个区别是 它们每次运行作业时都会显示一条通知 那么这是
  • 从外部 clojar 导入/使用资源

    我想做的是将一个大文件 MIDI 声音字体 打包到一个独立的 Maven repo clojar 中 然后能够以编程方式将其拉下来并从单独的项目中使用它 事实证明 这个看似简单的任务比我想象的要复杂 理想的情况是 如果有一种方法可以直接访问
  • 如何访问SD卡并返回特定格式的文件并进行数组?

    我需要访问SD卡并返回一些不同格式的文件 该位置将由用户输入 我如何以编程方式执行此操作 西蒙迪德 我相信这就是您正在寻找的 访问SD卡 在android中从sdcard读取特定文件 https stackoverflow com ques
  • 使用 javax.mail 和 CentOS 的邮件服务器

    我有一个 Java 程序 安装在一台旧的 Ubuntu 机器上 并使用 javax mail 发送邮件 然而 那台机器宕机了 我现在在新的 CentOS 机器上运行相同的 Java 应用程序 但是 当我尝试使用 mail smtp host
  • 方向更改时视图高度/宽度值错误?

    我实现了 onConfigurationChanged 来读取方向配置更改时视图高度和宽度的值 Override public void onConfigurationChanged Configuration newConfig supe
  • 配置为“ ”的资源“attr/pivotX”的值重复

    一个月后 启动 Android studio 并与 Gradle 同步时 弹出此错误 重建 清理项目不起作用并再次显示相同的错误 我尝试过重建 清理和无效 重新启动项目 但似乎没有任何效果 我已经在这个网站上搜索过这个问题 但似乎仍然没有任
  • Android studio SDK 管理器丢失

    我正在关注这个离子教程 https ionicacademy com get started with ionic 在 Android Studio 中设置 SDK 来测试我的 ionic 项目时遇到了一些问题 我正在寻找 SDK 管理器
  • 手势检测器不工作

    我有以下手势监听器 public class BookListener extends SimpleOnGestureListener implements OnTouchListener private LibraryActivity m
  • 我的应用程序未列出用于平板电脑

    我已将一个新应用程序上传到 play google com https play google com store apps details id development nk anguide https play google com s
  • 如何将我的自定义相机应用程序设置为默认应用程序?

    如果我使用以下代码 Intent takePictureIntent new Intent MediaStore ACTION IMAGE CAPTURE startActivityForResult takePictureIntent 1
  • Spotify API:INVALID_APP_ID

    我目前正在开发一个实现 Spotify API 的 Android 应用程序 我已经使用教程将我的应用程序连接到 Spotify 的所有代码 并且已经在我的应用程序上工作了一段时间了 当我在验证用户身份后通过我的应用程序播放歌曲时 它在我的
  • 如何实现再次播放功能?

    我希望在游戏结束时得到提示 如果我还想再玩一次的话 并使用 Y N 输入 退出游戏或重复游戏 我该如何以最有效的方式解决这个问题 编辑 描述资源路径位置类型 类型 Main Main java ScaredyCat src se grupp
  • androidx Recycler View 匹配约束 (0dp) 与换行内容行为

    我这里有简单的回收器视图 我想要的是 当列表很短时 将按钮粘贴到回收器视图下方 当列表很长时 将按钮粘在屏幕底部 但回收器视图正确换行并且能够滚动到底部
  • 用于将字符串与通配符模式进行匹配的递归函数

    所以我一整天都在试图解决这个作业 只是无法完成 以下函数接受 2 个字符串 第二个 不是第一个 可能包含 的 星号 An 是字符串的替换 空 1个字符或更多 它可以出现 仅在s2中 一次 两次 更多或根本不出现 它不能与另一个相邻 ab c
  • Spring Boot 健康执行器 - 什么时候上线?

    我找不到任何有关 Springs Health Actuator 何时返回 UP 状态的文档 你能依靠一切吗 Components正在初始化 会不会 Controller准备好满足请求了吗 为了测试应用程序上下文是否已加载 您可以执行此自定
  • Spring Data JPA 和 Exists 查询

    我正在使用 Spring Data JPA 使用 Hibernate 作为我的 JPA 提供程序 并想要定义一个exists附加 HQL 查询的方法 public interface MyEntityRepository extends C
  • 1° 夏令时 Java 和 JS 表现出不同的行为

    假设巴西利亚 GMT 0300 夏令时于 21 10 2012 00 00 00 此时时钟应提前一小时 Java new Date 2012 1900 9 21 0 0 0 Sun Oct 21 01 00 00 BRST 2012 Chr
  • gwt - 在 RPC 调用中使用 List

    我有一个 RPC 服务 方法如下 public List

随机推荐

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

    所以我有一个最初是英文的批处理文件工具 我已经翻译成各种其他语言 我的情况是许多语言都使用特殊字符 就我而言 它是德语 所以我可能会用英语 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 建立连接 虽然它可以完美地连接到服务器 但在传输文件时遇到问题 出于安全原因 订购应用程序的客户端要求在使用