Asp.net 对时间敏感的网页访问
如果传递了正确的时间敏感变量,是否可以创建重定向到私有页面的页面 例: 代码值是一个年-月-日-时间组合,必须根据服务器的时间在某个时间窗口(15分钟、30分钟等)内落下 如果代码有效或显示404,重定向页面将解析代码并重定向到私有页面(使用带有代码变量的模糊url) 使用场景:Asp.net 对时间敏感的网页访问,asp.net,Asp.net,如果传递了正确的时间敏感变量,是否可以创建重定向到私有页面的页面 例: 代码值是一个年-月-日-时间组合,必须根据服务器的时间在某个时间窗口(15分钟、30分钟等)内落下 如果代码有效或显示404,重定向页面将解析代码并重定向到私有页面(使用带有代码变量的模糊url) 使用场景: 甲方希望向乙方展示一个私人页面 A向B发送一个链接,其代码在接下来的30分钟内有效 B单击链接并被重定向到私人页面 31分钟后,点击链接产生404,刷新/回发私人页面也产生404 作为一个例子,在ASP.net中
- 甲方希望向乙方展示一个私人页面
- A向B发送一个链接,其代码在接下来的30分钟内有效
- B单击链接并被重定向到私人页面
- 31分钟后,点击链接产生404,刷新/回发私人页面也产生404
作为一个例子,在ASP.net中,我会缓存一个带有代码和重定向页面的keyvaluepair,并将缓存超时设置为30分钟,这只是一个简单的例子,但这是非常可能的。您将遇到的一个问题是,简单地更改url和查看私有信息有多容易 我会采取以下方法:
一种方法是将加密的时间限制作为查询字符串的一部分传递给页面。类似于
http://www....aspx?timelimit=[加密]
。其中[encrypted]不是用户可编辑的。您可能只需要以某种方式散列日期时间。是的,您可以这样做。但是,在传递的值中编码有效日期范围存在安全风险
更好的方法是生成一个随机代码,并将该代码与代码有效的日期范围一起存储在数据库中
这样,恶意用户猜测有效值的机会就少了。对于连接数据库的web应用程序来说,这是一项简单的任务。基本算法是将“票证”插入数据库表。票证将由一个随机字符串和一个时间戳组成 当页面的请求传入时,生成该页面的脚本可以在ticket表中查看是否有与通过URL参数传入的代码匹配的记录。如果有记录,脚本会检查时间戳是否过期。如果是,则生成404页。否则显示正确的信息 可能有一个预构建的内容管理系统模块或caned脚本可以做到这一点,但我自己也不知道 一种方法是将“有效开始时间”与只有服务器知道的私有字符串连接起来。基于该串联值生成has代码(例如MD5哈希)。将“有效开始时间”和散列发送回客户端。他们将两者都传回来查看页面。服务器将“有效开始时间”与密钥重新组合,重新计算哈希,并确保它与传入的哈希匹配。如果匹配,请将传入时间与服务器时间进行比较,以确保重定向仍然有效 这种方法不需要有效密钥的数据库以及它们所属的时间范围。您甚至可以将重定向的页面名添加到时间,使系统完全自包含
Server computes:
Hash = md5("2009-12-12 10:30:00" + "MyPage.aspx" + Secret Key)
Send to client:
"2009-12-12 10:30:00" + "MyPage.aspx", Hash
Client later sends to server
"2009-12-12 10:30:00" + "MyPage.aspx", Hash
Server checks
newHash = md5("2009-12-12 10:30:00" + "MyPage.aspx" + Secret Key)
Hash == newHash?
Yes and time within window then redirect, else error.
你提前知道X分钟什么时候开始吗?有些网站有特定时间(小时、天等)的促销代码,如果你提前知道,你可以检查客户的请求是否在这些时间内 如果你不提前知道,我会这么做
如果“那样”指的是我的解决方案,那就是密钥和md5散列的含义。使用足够长的密钥,猜测有效密钥的风险几乎为零http://www.foobar.com/abc.aspx=3我可以通过它进入我的浏览器并将3更改为4。即使是html表单也可能被有意愿的人入侵(他们可以编辑html并使用它发布他们想要的任何值)。不过,大多数人可能不会遇到这种麻烦。这是我的观点。你说的“哪里[加密]不是用户可编辑的”是什么意思?智能用户可以看到纯文本时间(如上午10:00),并知道如何编辑它。加密阻止了“如何”并使用户编辑变得毫无意义。这就是我想要的