在确认URL请求的正确性时使用md5机密的正确方法?什么时候该澄清这个秘密


Right way to use md5 secrets in confirming ok-ness of URL requests? When to clear the secret?

在某些情况下,我需要将URL放入网页中,当单击该网页时,会在服务器上激发一些处理代码。我显然想防止随机的坏人构建自己的URL并做他们不应该做的事情,所以我正在使用这个方案,从我在其他网站上看到的东西进行逆向工程:

  • 制作一个唯一的字符串(我使用MD5,但毫无疑问还有其他选项)
  • 将此字符串放入一个适当命名的会话变量中
  • 在URL中包含字符串,可能类似于/do_this/123/FABDYFYEYYDFBDHDFS
  • 当处理代码运行时,从url中提取字符串,并将其与会话变量的值进行比较——如果匹配,我们应该可以安全地继续。如果没有,那就另当别论

这对我来说还可以,除了用户浏览器的会话存储中充斥着不再相关的会话变量的部分。在某些情况下,一旦我完成了我正在做的事情,我就可以(并且确实)删除会话变量,但并不总是这样。在寻找清除旧变量的机会方面,我可能会更聪明一点,但这个问题似乎足够普遍,可能有更好的方法来做到这一点(即,由于我没有想到的许多原因,我想出的可能真的很愚蠢)。有什么建议可以更好地做这类事情吗?

我可能误解了这个问题,但我不确定为什么需要将唯一字符串存储在会话变量/cookie中。为什么不做一些类似的事情:

  • 使用<a>标记中的秘密字符串或任何位置渲染页面
  • 将字符串存储为"OK"服务器端
  • 当字符串用于触发事件时,请使其无效。如果链接导致页面重新加载,这会自动生效,但也可以使用AJAX等实现