gpt4 book ai didi

java - 如何验证URL参数没有被篡改?

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:19 28 4
gpt4 key购买 nike

假设我有一个用 Java 实现的网页,可以在 http://mycompany.com/page1.xhtml?trafficSource=someTrafficSourceIdentifier&checkSum=... 处获取。

我想跟踪不同流量来源(例如不同的广告 Activity )产生的页面访问量。为此,我有 trafficSource 参数。流量来源 ID 集仅限于 5 个可能的值(例如 Google Organic、Google AdWords、YouTube、Facebook、Twitter)。

想象一下,我想确保 trafficSource 没有被篡改(没有人在那里放置不同的值)。为此,我引入了 checkSum 参数。

为字符串 X 创建校验和 (checkSum = f(X)) 的最简单方法是什么,以便不同的输入字符串转换为不同的校验和?

此措施的目的是对我的参数进行基本检查。

我尝试使用以下内容,但它生成一个包含非字母数字字符的字节数组,我无法将其放入 URL 中。

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class CheckSumGenerator {
public String calculateCheckSum(final String aInput) throws NoSuchAlgorithmException {
final MessageDigest md = MessageDigest.getInstance("SHA");

final byte[] checkSumBytes = md.digest(aInput.getBytes());

final String result = new String(checkSumBytes);

return result;
}
}

最佳答案

您可以从http请求 header 中获取服务器端的referrer,该 header 对用户不可见。这可以识别来自 YouTube 或 Facebook 的访问者。

要解决将哈希值转换为字母数字字符串的问题,您可以将结果字节转换为十六进制代码。

final String result = DatatypeConverter.printHexBinary(checkSumBytes);

关于java - 如何验证URL参数没有被篡改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27628202/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com