【问题标题】:Security on a client server application客户端服务器应用程序的安全性
【发布时间】:2011-10-07 11:54:31
【问题描述】:

我正在开发一个客户端-服务器应用程序,客户端是与我的 c# 服务器通信的 iPhone 设备。客户端和服务器使用我设计的用于通过 TCP 套接字交换消息的文本协议。有人可以给我一些指导如何为这个应用程序添加基本的安全性吗? 目前,我拥有的唯一安全元素是使用登录用户名和密码进行客户端身份验证。但是例如,任何人都可以毫无问题地查看和读取客户端和服务器之间发送的消息...

【问题讨论】:

    标签: security authentication client-server


    【解决方案1】:

    在移动环境中,应用程序的用户对设备的控制权比您作为开发者的更多。 无法隐藏秘密密码或密钥。您必须考虑恶意客户端,因此请注意您公开的功能。

    以纯文本形式发送用户名和密码违反OWASP a9。您应该考虑使用 SSL/TLS 或 HTTPS。

    【讨论】:

    • 感谢回复,我需要怎么做才能添加ssl保护?我看到 c# 有一个 sslstream 是否足以使用它而不是常规流?如何获取私钥和​​公钥?花钱吗?
    • @Eyal 证书只是一个数字,数字是免费的。您可以使用每个 *nix 系统附带的 openssl 命令生成它。 (我相信你也可以在 Windows 下做到这一点,但它可能更难)。为此,您可以使用自签名证书并使用服务器的公钥分发客户端。这样做的重点是您不希望 easedropper 嗅探客户的用户名/密码/其他信息。
    • 我之所以问,是因为我看到一些帖子说获得 SSL 证书需要花钱。有没有关于在 Objective C 和 C# 中使用 SSL 的教程?
    • @Eyal 唱歌证书要花钱,如果你得到签名,你仍然需要生成一个。
    • 对不起,我对自签名证书和签名证书感到困惑,当我使用自签名证书时,它不需要花钱吗?但是当我使用签名证书时,它确实要花钱吗?
    【解决方案2】:

    你看过openssl吗? SSL 是提供安全通信的加密协议。 SSL 将阻止其他人监听您的客户端和服务器之间的流。

    您还应该做的一件事是验证所有服务器输入,以防止在您的服务器上执行恶意代码。例如,如果您有一个存储用户输入的数据库,您应该查看SQL injection

    【讨论】:

    • 感谢您的回复,验证所有服务器输入是什么意思?
    猜你喜欢
    • 2021-03-20
    • 2013-08-08
    • 2015-07-16
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多