【问题标题】:Easy HTTPS to PHP script简单的 HTTPS 到 PHP 脚本
【发布时间】:2011-05-31 07:33:36
【问题描述】:

这是我的场景:

我有一个带有 php、mySQL 的网站。我有一个软件应用程序,它有一个登录屏幕,并通过 http:

在网络上发送用户名和密码
    public String GetWebPageSource(String pURL)
    {

        try
        {


            byte[] vReceivedBytes = null;
            using (System.Net.WebClient vWebClient = new System.Net.WebClient())
            {
                vReceivedBytes = vWebClient.DownloadData(pURL);
            }
            int vBomLen = 3;
            byte[] vStrippedBytes = new byte[vReceivedBytes.Length - vBomLen];
            Array.Copy(vReceivedBytes, vBomLen, vStrippedBytes, 0, vReceivedBytes.Length - vBomLen);

            return System.Text.Encoding.UTF8.GetString(vStrippedBytes);



        }
        catch (Exception e)
        {

            Console.WriteLine(e.Message);
            return null;
        }

    }

所以要发送用户名和密码,我会写:

GetWebPageSource("http://mywebsite.com/Login.php?username=stackoverflow&password=iscool")

并且 php 文件会输出一些文本,说明密码是被接受还是被拒绝。

但是这并不安全。所以我想让它安全...... https。集成https有多容易?代码会改变多少?我需要处理多少?什么对我来说是透明的。我是否必须检查 cookie 是否已经存在,如果不编写身份验证方法,或者是否已经提供了可以为我做的库?

【问题讨论】:

    标签: c# .net authentication ssl https


    【解决方案1】:

    简而言之,您需要将 Web 服务器配置为使用 TLS/SSL。您的网站使用哪种服务器端语言并不重要。

    一般来说,服务器端脚本会在成功验证时设置一个 cookie/会话,然后检查 cookie 或会话数据是否有任何需要经过身份验证的用户的操作。使用正确配置的服务器,身份验证的加密由服务器和客户端的浏览器自动处理。

    我还建议在身份验证步骤中使用调试代理并观察服务器的请求/响应。这会告诉你你是否真的有一个安全的连接。

    【讨论】:

    • 调试代理?我在哪里可以得到其中之一? :) 请查看我对 sfk 帖子的评论
    • 就我个人而言,我喜欢 Charles,它是一个共享软件,但试用效果不错。基本上,当您启动应用程序时,它会自动“记录”您的浏览器或其他使用 HTTP 的应用程序的所有请求和响应。它对于调试 AJAX 后端、iPhone 应用程序等非常有用。在您的情况下,您将能够通过查看对您的身份验证脚本的请求并查看乱码的请求正文来验证您的身份验证是否已加密。
    【解决方案2】:

    从编程的角度来看,使用 http 或 https 调用 php 脚本没有任何区别。只需配置 apache(或任何其他 Web 服务器)来处理 https(最值得注意的是获取证书)。

    【讨论】:

    • 所以我可以在发出请求时使用 https:// 路径而不是 http。 cookie 将如何管理?它的生命周期是多少...我讨厌服务器每次调用 GetWebPageSource 时都必须重新进行身份验证。使用 SSL 对服务器的性能有何影响?所以要确认我不需要修改这段代码吗?如果我在服务器端配置密钥等,这一切对我来说都是透明的吗?
    • 是的,一旦你正确配置了你的网络服务器,它应该同时监听 http 和 https 请求。您可能不必对代码进行太多修改,但为您的身份验证页面“强制”https 是一种很好的做法。我不知道这方面的最佳做法,(可能是某种重定向)但我相信你会在网上找到一堆讨论。
    • 我不确定会话处理如何与 C# 一起工作,但通常大多数语言(如 PHP)相当透明地处理会话。您可以只调用一个函数 (start_session),然后将登录用户名等值添加到全局会话数组中。然后,其他页面/脚本只需要检查数组以确保您已登录。(我提到 PHP 是因为它在您的标题中。PHP 中的“后端”是吗?)
    • 最后,我最近读到许多网站(例如 github)出于安全考虑而采用“仅 SSL”。如今,使用 SSL 对服务器的性能确实没有影响。
    • 出于测试目的,大多数 Web 服务器将具有 SSL 的自签名证书。您可以在测试应用程序的同时使用它。通常,您必须绕过证书检查,否则您的应用可能无法连接到服务器。稍后,您可以使用由 Verisign 或 GoDaddy 或 Comodo 等证书颁发机构公司获得的签名证书。
    猜你喜欢
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 2010-10-31
    • 1970-01-01
    • 2016-07-30
    • 2013-04-05
    • 2011-04-11
    相关资源
    最近更新 更多