为onclick事件添加实时时间

Add realtime time to onclick event

当我点击 link 时,我想在您点击它的那一刻添加 date/time-stamp。发送前必须加密时间戳。

我找到了一个很好的例子:

  <a href="#" onClick="window.open('/download.cfm?f=#filname#&t=' + (new Date().getTime()));">click me</a>

但是我想加密时间戳。所以我试过了,但是现在时间戳不是实时的,而是在页面加载时生成的。

 <a onClick="window.open('/download.cfm?f=#filename#&t=#encrypt(Now(), application.EncryptionKey, "AES/CBC/PKCS5Padding", "HEX")#','_system');" href="##">#filename#</a>

一个简单的解决方案是对 Base-64 哈希使用 javascript btoa 函数,并使用 atob 函数将其 return 返回到等效的数字。

btoa(new Date().getTime())

会不会 return 根据你现在的情况 date/time:

"MTU2MzY0MTc2MzA2Mg==" 

使用它来 return 哈希值返回到数字。

atob("MTU2MzY0MTc2MzA2Mg==")

更新:

您可以考虑实施 crypto-js 库以获得更好的加密,但我认为这不会真正解决不使用不同时间戳更改 url 的问题。根据您的示例查询字符串,更好的方法可能是实施 one-time 使用键。

从 CF 服务器端生成一个“令牌”密钥,该密钥被插入数据库 table(或其他服务器端存储),其中包含一个活动标志并将令牌值附加到查询字符串。

/download.cfm?f=#filname#&key=#token#

在您的 download.cfm 文件中,添加将检查令牌密钥活动状态的逻辑。如果密钥处于活动状态,则将状态翻转为非活动状态并允许下载,否则不允许下载。