我需要通过C#软件创建FTP用户,这是运行客户端,我不知道从哪里开始或如何做到这一点,我甚至不确定这是否可行,因为这可能需要记录作为根?
我的另一个选择是通过C#软件调用PHP脚本,它可以调用system()脚本吗?
这个功能需要在Linux共享主机上工作(因为这是共享的,我不能尽我所能)。
答案 0 :(得分:2)
管理FTP服务器的唯一方法是通过DirectAdmin。因此,除非有DirectAdmin的API并且您可以访问它,或者您的共享托管服务提供商提供某种API,否则您将无法执行此操作。
如果您可以使用system()管理共享主机上的用户,那么一定要走那条路。
如果不能,那么您可能需要创建一个在服务器上运行的脚本,该脚本接受传入的请求,然后直接与DirectAdmin一起管理用户。这将要求脚本知道DirectAdmin凭据,如果DirectAdmin发生任何更新,则可能会破坏您的脚本。我会非常小心这种方法,因为任何有权访问此脚本的人都可以管理ftp用户。如果您的客户可以管理这些FTP用户,任何人都可以。如果有任何身份验证,用户将如何与客户端进行“身份验证”。如果是这样,他们如何进行身份验证?因为您的“api”脚本也需要使用该身份验证。
我的问题是,你真的需要创建一个FTP用户吗?如果他们只需要上传文件,他们不能简单地通过在线表格上传文件吗?还是通过客户?你需要使用FTP吗?
修改强> 正如我在评论中所说,一个想法是拥有一个服务器端脚本(可能是PHP)来处理文件。它会接受上传/删除/删除文件的请求。当文件上传到网站时,它将被存储,并且会返回一个特殊的标记以及文件的位置。
然后,客户端将获取令牌,将其存储在本地,当用户在客户端上管理文件时,它将使用该令牌进行将来的修改。我会随机生成此令牌(不基于用户的任何数据)。存储令牌的方式取决于您,可以在文件系统中包含文件,也可以存储在数据库中。
客户端与网站之间的通信应尽可能通过SSL完成,以阻止MITM攻击。
至于上传文件,这取决于您的客户端如何对其用户进行身份验证。如果它是通过中央数据库,共享托管服务器可以访问它,如果你不想这样做,那么你需要类似于公钥系统的东西。这样客户端就可以发送共享主机脚本可以判断用户是否有效的密钥。但是,当密钥被撤销时,你必须知道脚本等等。
因此,您需要如何处理此部分。
答案 1 :(得分:1)