我需要一些关于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={猜测的guid}”并期望访问有效的资源,包括使用每秒进行多次随机猜测的脚本?
还是说没有替代方法,只能从Session变量确定用户的ID,确定他确实可以访问所请求的资源,然后才返回它(当我写这篇文章时,我越来越相信这是正确的方法!)。
谢谢
因此,“GetResource.aspx?id=123”会返回用户可以访问的图片。当然,用户也可以手动输入URL“GetResource.aspx?id=456”,在这种情况下,具有该ID的图片/文档等将被返回,但他们可能没有权限访问它。
因此,明显使用整数ID是不够的。使用GUID作为ID是否提供足够的“随机性”,使我可以可靠地假设用户永远无法手动输入“GetResource.aspx?guid={猜测的guid}”并期望访问有效的资源,包括使用每秒进行多次随机猜测的脚本?
还是说没有替代方法,只能从Session变量确定用户的ID,确定他确实可以访问所请求的资源,然后才返回它(当我写这篇文章时,我越来越相信这是正确的方法!)。
谢谢