Kat*_*ate 2 asp.net security guid
我从安全角度提出了有关使用GUID的一些建议.我开发了一个ASP.Net应用程序.它为用户提供对Web服务器上不存在的某些材料(如文档和照片)的访问权限.这些存储在文件服务器上.我有一个'GetResource.aspx'页面,它获取资源的ID,使用System.IO.FileInfo将其打开到响应流并返回它.
因此,GetResource.aspx?id = 123会返回一个用户有权访问的图片.当然,用户可以手动输入URL作为GetResource.aspx?id = 456,在这种情况下,将返回具有该ID的图片/文档等,并且它可能不是他们有权访问的人.
所以显然使用整数ID是不够的.使用GUID作为ID提供足够的"随机性",我可以可靠地假设用户永远不能手动输入"GetResource.aspx?guid = {A guessed guid}"并期望访问有效资源,包括使用脚本每秒做出许多随机猜测?
或者,没有替代从Session变量确定用户的ID,确定他确实有权访问所请求的资源,然后才返回它(在我写这个时,我越来越相信是这样的! ).
谢谢
如果用户是受保护的内容,则应在盲目提供之前确定用户是否已获得授权.
GUID确实在某种程度上有所帮助,它使得猜测URL变得更难,所以我仍然建议使用它们.但URL仍然可以共享(甚至意外).如果您只是提供内容,无论谁提出请求,那么它几乎没有真正的保护.
当然没有替代方法来验证用户并查看他们是否有权访问资源.您在此提出的建议是一种方法,使用户更难以查找他们无权查看的文档的有效ID(无论是错误还是故意).
GUID肯定足够大,你在实践中永远不会得到"偶然"的有效ID.这使得没有授权的GUID会检查一个效果很好的系统,只要没有人主动尝试破解它.另一方面,授权检查是一种即使在活跃攻击者在场的情况下也能很好地工作的系统(当然这取决于攻击者可以设法做什么).
您应该根据应用程序的性质在两种方法之间进行选择(是公开的吗?用户是否已知并对其操作负责?"安全漏洞"有多糟糕?).
| 归档时间: |
|
| 查看次数: |
3667 次 |
| 最近记录: |