first of all, the question from a naive point of view:
I've got a WebApplication with a URL to a product like Products?id=123
. Let's say I've got an administration page reachable from Products?id=123&editable=true
.
If I consider that no one will ever try to enable the editable
parameter, and thus don't need any further security mechanism to protect this page, that's security by obscurity, and that's not a good idea, right?
-
In my real case problem, it's slightly more subtle: is there any danger in allowing anyone to know my administration URLS? for instance, while working with XSL, I would like to write:
<xsl:if test="/webAlbums/mode/@admin">
(compute edit link)
</xsl:if>
but wouldn't it be easier for a potential attacker to find a weakness in 'important' pages?
Daniel Miessler gives another element of response in his blog, the one I had in mind when I wrote the question but couldn't formulate:
- Obscurity as a Layer makes a system with already good defenses more difficult to target, which improves its overall security posture.
- Security Through Obscurity means that, once targeted, the system will be defenseless, i.e. all its security comes from secrecy.
Hiding configuration URLs from unauthenticated clients adds a layer of security, on top of standard authentication mechanisms.
If crackers don't know where the door is, they will be less likely to try to force it!
That's what he does by changing its SSHd port to 24, port scanner will locate the SSH server, but automatic brute-force scripts will only try the default one.
Results? after a weekend, 18,000 attacks on port 22 and 5 on port 24 (he let both ports open to permit the comparison).