为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 文件中,添加将检查令牌密钥活动状态的逻辑。如果密钥处于活动状态,则将状态翻转为非活动状态并允许下载,否则不允许下载。
当我点击 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 文件中,添加将检查令牌密钥活动状态的逻辑。如果密钥处于活动状态,则将状态翻转为非活动状态并允许下载,否则不允许下载。