首先,从幼稚的角度来看问题:
我有一个WebApplication,其中包含Products?id=123
等产品的网址。假设我的管理页面可以从Products?id=123&editable=true
到达。
如果我认为没有人会尝试启用editable
参数,因此不需要任何其他安全机制来保护此页面,那就是安全隐藏,以及那不是个好主意,对吧?
-
在我的实际案例中,它稍微有点微妙:允许任何人知道我的管理URL是否有任何危险?例如,在使用XSL时,我想写一下:
<xsl:if test="/webAlbums/mode/@admin">
(compute edit link)
</xsl:if>
但潜在的攻击者在'重要'页面中找到弱点不是更容易吗?
答案 0 :(得分:1)
通过默默无闻的安全几乎没有安全保障。不要指望它。
您应该建立一个身份验证系统,阻止人们通过实际安全性来使用管理页面。
对于知道您的管理网址的人来说,只要您的管理页面受到保护并且网址中没有显示敏感数据(例如数据类型的内部表示,某些内部ID),就应该没问题。数据等)。
答案 1 :(得分:0)
你实际上很幸运,因为你所建议的实际上并不是默默无闻的安全性,而是一种名为Obscure URL的完美声音安全技术。
要使其正常工作,您需要确保URL的一部分与强密码一样难以猜测。只要页面无法编辑,除非该部分是正确的,否则在何处包含它并不重要。
不安全的例子:
Products?id=123&editable=true
安全示例:
Products?id=123&editable=true&edit-token=GgSkJSb6pvNT
Products?id=123&edit=GgSkJSb6pvNT
edit/GgSkJSb6pvNT/Products?id=123
GgSkJSb6pvNT/Products?id=123
答案 2 :(得分:0)
我不做网络编程,所以我可能会有点偏离基础,但我认为有一些事情需要考虑:
与任何其他身份验证系统一样,如果您在没有HTTPS的情况下访问管理页面,则页面请求(包含有效的“密码”)将以明文形式发送。
除非另有配置,否则浏览器将保留管理页面的历史记录和缓存。这使得秘密URL更容易被攻击者或使用您机器的任何人使用。
与所有密码一样,如果秘密网址足够简单,则有可能被强制使用。像&editable=true
这样的东西并不会让我感到安全。
但如果处理得当,这应该和传统的身份验证系统一样安全。
答案 3 :(得分:0)
- 作为图层的晦涩使得已经很好防御的系统更难以定位,从而改善了整体安全状况。
- 安全通过晦涩意味着,一旦有针对性,系统就会毫无防御能力,即所有安全都来自保密。
隐藏未经身份验证的客户端的配置URL会在标准身份验证机制之上添加层安全性。
如果破解者不知道门在哪里,他们就不太可能试图强迫它!
这是他在changing its SSHd端口到24时所做的事情,端口扫描程序将找到SSH服务器,但自动暴力脚本只会尝试默认的。
结果?在一个周末之后,端口22上的 18,000 攻击和端口24上的 5 (他让两个端口都打开以允许比较)。