c# - 动态创建FTP用户

标签 c# php

我需要通过 C# 软件创建 FTP 用户,该软件在客户端运行,我不知道从哪里开始或如何做到这一点,我什至不确定这是否可能,因为这可能需要记录作为根用户?

我的另一个选择是通过 C# 软件调用 PHP 脚本,它可以调用 system() 脚本?

此功能需要在 Linux 共享主机上运行(因为这是共享的,我无法尽我所能)。

最佳答案

管理 FTP 服务器的唯一方法是通过 DirectAdmin。因此,除非有 DirectAdmin 的 API 并且您有权访问它,或者您的共享托管提供商提供某种 API,否则您将无法执行此操作。

如果您可以使用 system() 管理共享主机上的用户,那么请务必采用该方法。

如果不能,那么您可能需要创建一个在服务器上运行的脚本,该脚本接受传入请求,然后直接使用 DirectAdmin 来管理用户。这需要脚本知道 DirectAdmin 凭据,如果 DirectAdmin 发生任何更新,则可能会破坏您的脚本。我会非常小心地使用此方法,因为任何有权访问此脚本的人都可以管理 ftp 用户。如果您的客户端可以管理这些 FTP 用户,那么任何人都可以。如果有任何身份验证,用户将如何与客户端进行“身份验证”。如果是这样,它们是如何验证的?因为您的“api”脚本也需要使用该身份验证。

我的问题是,您真的需要创建 FTP 用户吗?如果他们只需要上传文件,难道不能通过在线表单上传文件吗?还是通过客户端?您需要使用 FTP 吗?

编辑: 正如我在评论中所说,一个想法是拥有一个服务器端脚本(也许是 PHP)来处理文件管理。它会接受上传/删除/等等文件的请求。当文件上传到网站时,它将被存储,并且会返回一个特殊的 token 以及文件的位置。

然后,客户端将获取 token ,将其存储在本地,并且当用户在客户端上管理文件时,它将使用该 token 进行将来的修改。我会随机生成此 token (不基于用户的任何数据)。如何存储 token 取决于您,可以存储在包含文件的文件系统上,也可以存储在数据库中。

如果可能,客户端和站点之间的通信应通过 SSL 完成,以阻止 MITM 攻击。

至于上传文件,这实际上取决于您的客户端如何验证其用户的身份。如果是通过中央数据库,共享托管服务器可以访问它,如果您不想这样做,那么您需要类似于公钥系统的东西。这样客户端就可以发送一个 key ,共享托管脚本可以判断用户是否有效。但随后您必须让脚本知道 key 何时被撤销等。

因此,如何继续这部分取决于您。

关于c# - 动态创建FTP用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3151786/

相关文章:

php - 究竟如何使用 onDelete = "SET NULL"- Doctrine2

c# - SQL Server transient 异常编号

c# - 我可以向功能区添加自定义控件吗?

php - 如何处理 Doctrine2 中 WHERE 子句中的 "IN"

php - MySQL错误信息,错误代码1064,LIMIT 20 OFFSET 0

php - html 在不工作后用 php 提交按钮

C# 返回一个枚举和一个 int 数组

c# - 如何在 Dropdownlist selectedIndexChanged 中获取行索引?

c# - 如何为 WebClient.DownloadFileAsync 捕获 404 WebException

php - 当脚本从 Controller 发送到 jquery ajax 时,z-index 不起作用