使用asp.net登录控件的部分站点SSL

使用asp.net登录控件的部分站点SSL,asp.net,ssl,login,Asp.net,Ssl,Login,我正在尝试将一个自制的登录系统转换为.net中包含的标准asp.net登录控件。我希望未登录的用户在网站上的所有通信都以明文形式进行,但在用户登录后将所有内容锁定在SSL中,包括用户名和密码的传输 之前,我加载了第二个页面——“loginaction.aspx”——带有https:前缀,然后通过在Request.Form.Keys中查找适当的文本框控件来提取用户名和密码,从而实现了这一点。是否有一种使用.net登录控件执行类似操作的方法?我不希望有一个单独的登录页面,而是希望在站点的每个页面上都

我正在尝试将一个自制的登录系统转换为.net中包含的标准asp.net登录控件。我希望未登录的用户在网站上的所有通信都以明文形式进行,但在用户登录后将所有内容锁定在SSL中,包括用户名和密码的传输


之前,我加载了第二个页面——“loginaction.aspx”——带有https:前缀,然后通过在Request.Form.Keys中查找适当的文本框控件来提取用户名和密码,从而实现了这一点。是否有一种使用.net登录控件执行类似操作的方法?我不希望有一个单独的登录页面,而是希望在站点的每个页面上都包含此控件(在登录视图中)。

您不能将站点设置为非SSL,每个页面上都有一个登录框,然后通过SSL提交用户名和密码

真正做到这一点的唯一方法是使用某种框架。这样,您的整个页面可以是非SSL的,但登录框架必须是SSL


通常的方法是使用SSL锁定整个站点,不必担心用户名和密码被SSL加密,并在登录后转到SSL,或者转到我上面提到的帧路由

您不能简单地执行您所说的操作,因为回发(即登录控件使用的)将是页面的任何安全性(SSL或非SSL)

在这种情况下,最好使用IFRAME,它包含一个仅包含login控件的HTTPS(SSL)页面。登录后,您可能必须重定向到另一个页面,以便跳出IFRAME


计划B是在页面上有一个单独的表单(在主表单之外),该表单的ACTION属性指向处理登录的另一个页面。您必须使用自己的登录代码来处理表单身份验证。

我可以通过向login button控件添加OnClientClick事件并将其设置为以下javascript函数来完成此操作。
`


意识到,使用这些技术中的任何一种仍然不安全,因为它易受中间人攻击的影响。有关更多信息,请阅读此。
function forceSSLSubmit() 
{

                var strAction = document.forms[0].action.toString();

                if (strAction.toLowerCase().indexOf("http:") == 0) {
                    strAction = "https" + strAction.substring(4);

                    document.forms[0].action = strAction;
                }

        }