我正在实现一个RESTful Web服务,用户必须发送一个签名的验证令牌以及请求,这样我才能确保请求没有被中间人篡改.我目前的实施如下.
验证令牌是序列化为String的VerifData对象,然后进行散列和加密.
class VerifData {
int prop1;
int prop2;
}
Run Code Online (Sandbox Code Playgroud)
在我的服务中,我将要序列化的数据放入VerifData实例中,然后使用Jackson ObjectMapper对其进行序列化,并将其与验证令牌一起传递给验证引擎.
VerfiData verifData = new VerifData(12345, 67890);
ObjectMapper mapper = new ObjectMapper();
String verifCodeGenerated = mapper.writeValueAsString(verifData);
Run Code Online (Sandbox Code Playgroud)
但似乎每次启动应用程序容器时,ObjectMapper映射到字符串的属性顺序都会发生变化.
例如:有一次
{"prop1":12345,"prop2":67890}
Run Code Online (Sandbox Code Playgroud)
它将是另一次
{"prop2":67890,"prop1":12345}
Run Code Online (Sandbox Code Playgroud)
因此,如果客户端已将VerifData实例序列化为第一个String,则即使它是正确的,也有50%的可能性失败.
有办法解决这个问题吗?我可以通过ObjectMapper指定要映射的属性的顺序(如升序)吗?或者是否有其他方法可以最好地实施此验证步骤.客户端和服务器实现都是由我开发的.我使用Java Security API进行签名和验证.
当我们可以使用简单的SQL语句直接与数据库通信时,我想了解数据集的用途.另外,哪种方式更好?更新数据集中的数据,然后立即将它们传输到数据库或直接更新数据库?
假设我有10个文本框,我想将相同的文本放入每个文本框中.我不想写textBoxNum. Text = "hello!"十次所以我可能写这样的东西:
for(int i=1; i<=10; i++)
{
textBox + i. Text = "hello!";
}
Run Code Online (Sandbox Code Playgroud)
显然,它不起作用.
如何通过for循环完成?
使用Byteman时,我们必须在规则语法中指定类和方法.如果我想使用Byteman跟踪程序执行怎么办?
示例:执行程序功能时,我不知道正在执行哪些方法.我想在功能执行期间识别被调用的方法.
这是否意味着我要为给定包中每个类的每个方法添加一个规则?或者有没有其他方法来实现这一目标?