新社区网站

通常,你会在正确的地方,但我们最近推出了一个全新的社区网站……为社区,受社区。

耶……带我去社区!

社区博客是社区成员的个人观点,绝不是DNN公司或DNN平台的官方立场。这是一个表达个人对DNNPlatform、社区及其生态系统的想法的地方。你有什么有用的信息想要与DNN社区分享吗?如果有,请联系

社区博客的使用由我们的社区博客指南-请在评论或发布之前阅读。


确保您的DotNetNuke网站在5个简单的步骤

五月 13

让我们首先看看使用SSL的性能开销。在Stackoverflow上有几个关于这个主题的好问题,在这里在这里年长的研究似乎指向一个合理的开销,但最近更有趣轶事指向相反方向。一般来说,使用当前的现代硬件应该不会对性能产生太大的影响,但是,对于大型繁忙站点,在负载测试中包含SSL总是一个好主意。

SSL证书的定价也不应该是一个问题。如果你的预算真的很低,有很多免费SSL提供商可用。当然,这取决于您正在处理的站点的重要性,因为您可能不想使用免费证书。

现在,对于这篇文章的主题:如何为你的DotNetNuke网站设置一个安全的登录。本攻略主要基于特洛伊·亨特的一篇博客文章,面向。net开发者的OWASP十大建议,第9部分:传输层保护不足。在这篇文章中Troy非常详细地解释了仅仅有一个安全的(SSL)登录是不够的,但是所有后续的请求也需要是安全的,否则在某些情况下(比如不安全的WiFi连接)认证cookie仍然可以被劫持。

幸运的是,ASP。NET为此提供了一个非常简单的解决方案:修改web中的表单身份验证设置。配置要求SSL用于身份验证cookie。一旦这样做,身份验证cookie将不再通过不安全的(HTTP)连接发送。这意味着您只能通过SSL连接登录到站点,一旦您更改回非SSL连接,您将自动注销。

为了设置这为您的DotNetNuke网站,你必须改变:

<身份验证模式= "形式" >
< name = "形式。DOTNETNUKE" protection="All" timeout="60" cookies =" useccookies " />
> < /认证

在此:

<身份验证模式= "形式" >
< name = "形式。DOTNETNUKE" protection="All" timeout="60" cookies =" useccookies " requireSSL= " true " />
> < /认证

这意味着从现在开始,只有在传输层安全的情况下才会发送所有身份验证cookie。所以不要马上做这个改变,因为这样做会阻止你登录!首先,您必须准备DotNetNuke以使用仅SSL登录。

步骤1:在IIS中为您的网站启用SSL

我不打算在这里解释它,因为这是IIS中非常常见的过程。看到在这里了解更多关于如何做的信息。

步骤2:在DotNetNuke中为您的站点启用SSL

DotNetNuke提供了一种全面的方法来启用和强制每个网站(门户)的SSL。对于此任务,为站点启用SSL就足够了。为了做到这一点,转到Admin >站点设置,到高级选项卡,然后打开SSL设置部分。在本节中,选中“启用SSL ?”选项。,并更新设置。

SNAGHTML187bc9c4

步骤3:创建一个安全的登录页面

默认情况下,自动生成的登录页面(或弹出)为DotNetNuke是不安全的。为了提供一个安全的登录选项,您将不得不创建一个单独的页面,其中有一个帐户登录模块,并被标记为安全。虽然您可以在每个级别创建此页面,并给它任何名称,但最合乎逻辑的是在根级别创建此页面,并给它命名为“Login”。虽然DotNetNuke会自动处理一切,一旦你做了每一个必要的调整,它让我安心,知道你正在覆盖登录页面的自动URL。

总的来说,新的登录页面需要设置这些属性:

  • 页面名称:Login
  • 根级别(没有父页面)
  • 权限:查看所有用户(或未经身份验证的用户)的权限
  • 安全:必须设置安全标志(这将确保页面只能使用HTTPS协议查看,DotNetNuke会自动切换到HTTPS)

SNAGHTML1882735b

  • 最后,在页面上放置一个帐户登录模块。

步骤4:使用新的登录页面

没有“告诉”DotNetNuke使用这个新的登录页面,它将继续使用自动登录选项。登录页面是一个所谓的特殊页面,这意味着这个页面的位置存储在每个站点上,可以被任何模块或扩展中的任何其他进程使用。要更改特殊的登录页面,请转到Admin >站点设置,打开“高级设置”选项卡,并选择页面管理部分。在本节中,在“登录页面”选择您新创建的登录页面,并更新设置。

SNAGHTML188a509f

步骤5:启用RequireSSL

打开网络。并将Forms Authentication节点更改为如下所示:

<身份验证模式= "形式" >
< name = "形式。DOTNETNUKE" protection="All" timeout="60" cookies =" useccookies " requireSSL= " true " />
> < /认证

警告

这里有一个很大的警告。由于表单认证Cookie设置是在应用程序级别完成的,在web。此解决方案假设您在DotNetNuke中只配置了一个站点,或者所有站点都可以使用应用于IIS网站的SSL证书进行保护。这意味着您可能必须对一个IIS网站应用多个SSL证书。

SSL证书通常只对一个域有效,或者对一个域及其所有子域(即所谓的子域)有效通配符SSL证书)。或者您可以获得多个不相关域的证书(即所谓的(UCC或SAN证书)。不过,最好的解决办法是在地下运行Windows 2012支持服务器名称指示(SNI),它允许您将多个SSL证书应用于一个网站(使用不同的主机头)。这是另一篇博客文章的素材!

最后的评论

为经过身份验证的用户保护站点是多么重要,这一点我再怎么强调也不为过。我喜欢看他的博客文章特洛伊狩猎因为他总是让我惊讶,侵犯别人的隐私是多么容易,闯入其他网站是多么容易。保护你的网站只是一个小的,但重要的一步,朝着一个更安全的网络的目标。

由于有很多SSL提供程序甚至提供免费的SSL证书,实际上没有人应该有正当理由不开始使用一个。

这篇文章是从我的个人博客上交叉发布的

评论

盖尔Lampinen
如果您有一个SAN证书并且您的父门户和子门户具有相同的IP但不同的域,那么在DNN中保护站点的正确方法是什么?
盖尔Lampinen 2014年6月2日星期一晚上8:31 (链接)
盖尔Lampinen
你能删除或编辑我的评论吗?如果你有一个SAN证书,在两个不同的域中有两个不同的父门户,相同的IP地址,IIS 7.5,那么正确的方法就是在DNN中保护一个站点
盖尔Lampinen 2014年6月5日星期四下午12:30 (链接)
艾伦•默里
我想知道如果我在我的网站上设置了这个,然后在相同的DNN安装(完全不同的url)中创建其他父网站,如果我不使用其他父网站的自定义登录页面,他们还会使用SSL证书吗?如果有区别的话,我们的SSL证书是UCC证书。
艾伦•默里 2015年4月17日星期五上午8:54 (链接)
理查德·哈里斯
这里有一个问题:如果你只给你的网站一个TLS绑定(IE,所以它只能通过SSL/TLS访问),那么除了cookie设置,其他人甚至做什么?
理查德·哈里斯 2016年5月3日星期二下午6:30 (链接)
Edoardo Antonini
问题是我有多个门户运行在同一个DNN安装。有解决办法吗?
你说“最好的解决方案是在Windows 2012下运行,因为它支持服务器名称指示(SNI),它允许你将多个SSL证书应用到一个网站(使用不同的主机头)。不过,这是另一篇博客文章的素材!”
那篇博文是你写的吗?
Edoardo Antonini 星期二,2017年2月7日上午11:31 (链接)

评论形式

只有注册用户才能发表评论。

NewsArchives


Aderson Oliveira(22岁)
亚历克·惠廷顿(11岁)
亚历山德拉·戴维斯(3岁)
Alex Shirley(10岁)
安德鲁·霍夫林(3岁)
安德鲁·纳斯(30岁)
安迪·特里巴(1)
安东尼·格伦赖特(5岁)
安东尼奥·夏格里(28岁)
阿什·普拉萨德(37岁)
本·施密特(1)
本杰明·赫尔曼(25岁)
伯努瓦·萨顿(9岁)
贝丝·费尔堡(12岁)
比尔·沃克(36岁)
鲍勃·克鲁格(5岁)
波格丹·莱特斯库(1)
布莱恩·杜克斯(2岁)
白雪皑皑(1)
布鲁斯·查普曼(20岁)
布莱恩·安德鲁斯(1)
卡塔·康诺利(55岁)
查尔斯·纳斯(163)
克里斯·哈蒙德(第213届)
克里斯·帕特拉(55岁)
克林特·帕特森(108)
邝党(21岁)
丹尼尔·巴塞洛缪(2岁)
丹尼尔·梅特勒(181)
丹尼尔·瓦拉达斯(48岁)
戴夫·巴克纳(2岁)
大卫·波因德克斯特(12岁)
大卫·罗德里格斯(3岁)
萧耀文(1)
道格·豪厄尔(11岁)
Erik van Ballegoij(30岁)
恩斯特·彼得·塔明加(80岁)
弗朗西斯科·佩雷斯·安德烈斯(17岁)
杰夫·巴洛(12岁)
乔治·阿拉特拉什(12岁)
吉福德·沃特金斯(3)
吉尔·勒·皮戈彻(3)
伊恩·罗宾逊(7岁)
以色列·马丁内斯(17岁)
简·布洛姆奎斯特(2)
简·乔纳斯(3岁)
贾斯普雷特·巴蒂亚(1)
詹妮·梅里菲尔德(6岁)
乔·布林克曼(274)
约翰·米切尔(1)
乔恩·亨宁(14岁)
乔纳森·希利(4岁)
乔丹·库珀史密斯(1)
约瑟夫·克雷格(2岁)
马侃(1)
凯文贝吉(3岁)
凯利·福特(4岁)
肯·格里尔森(10岁)
凯文·施莱纳(6岁)
利·波因特(31岁)
洛林·杨(60岁)
Malik Khan (1)
马特·拉特利奇(2岁)
马蒂亚斯·施洛曼(16岁)
毛里西奥Márquez (5)
迈克尔·多克西(7岁)
迈克尔·托比什(3岁)
迈克尔·华盛顿(2002)
米格尔·加梅坦(3)
迈克·霍顿(19岁)
米歇尔·塞勒斯(40岁)
弥敦罗孚(3)
Navin V Nagiah(14岁)
n (31)
Nik Kalyani(14岁)
奥利弗·海因(1)
帕特里西奥·f·萨利纳斯(1)
帕特里克·瑞恩(1)
彼得·唐克(54岁)
菲利普·比德尔(135岁)
菲利普·贝克尔(4岁)
理查德·杜马斯(22岁)
罗伯特·J·柯林斯(5岁)
罗杰·塞尔温(8岁)
鲁本·洛佩兹(1)
莱恩·马丁内斯(1岁)
Sacha Trauwaen (1)
爱沙尼亚语(4)
Sanjay Mehrotra(9岁)
斯科特·麦卡洛克(1)
斯科特·施莱西尔(11岁)
斯科特·威尔金森(3岁)
斯科特·威尔海特(97岁)
塞巴斯蒂安·洛波德(80岁)
肖恩·沃克(237)
肖恩·梅哈菲(17岁)
斯蒂芬·卡尔曼(12岁)
Stefan Kamphuis(12岁)
史蒂夫·法比安(31岁)
史蒂文·费舍尔(1)
蒂莫·布鲁梅尔霍夫(24岁)
托尼·亨利克(3岁)
托斯滕·韦根(3岁)
第谷·德·沃德(4)
Vicenç Masanas(27岁)
Vincent Nguyen(3岁)
维塔利·科扎达耶夫(6岁)
威尔·摩根维克(40岁)
威尔·斯特罗尔(180岁)
威廉·塞弗伦斯(5岁)
什么是液体含量?
找出
什么是液体含量?
找出
什么是液体含量?
找出
Baidu
map