为什么它在条件中使用“EnCounter> = limit”?

问题描述 投票:-1回答:1

在状态机图中,我不明白为什么条件是ErrCounter> = limit。我认为写ErrCounter == limit .是好的

uml state-machine state-diagram
1个回答
1
投票

ErrCounter >= limit强于ErrCounter == limit。你没有风险就获得了收益。

这是安全的。问题是,在其中一个州(或甚至在过渡期)可能还有其他东西使ErrCounter增加,或者ErrCounter在启动过程时可能已经等于限制(顺便说一句,这应该导致拒绝,但从不介意) 。

让它成为生活的榜样。想象一下这两个场景(让我们说limit = 3):

  1. 持卡人已经在其他一些地方(例如在商店里)尝试过三次不能使用正确的针脚。现在ErrCounter = 3。持卡人决定在ATM上再试一次。 ATM读取ErrCounter(作为Authentication的一部分)并且由于CheckPin失败(自动由于太早的尝试)现在ErrCounter再次增加(所以ErrCounter = 4)。在弱势情况下,您可以在无限循环中反复尝试。
  2. 该卡是重复的(你知道,现在它可以通过任何NFC手机处理)。想象一下,两个人想要大量提取,以便他们同时在两台ATM上工作。运气不好的是,他们发现自己处于两次错误PIN码的情况。假设ATM读取当前的ErrCounter作为Authentication的一部分。所以我们(在括号中得到ErrCounter): 伙伴1在ATM1上输入错误的PIN码(ErrCounter = 1) 合作伙伴2在ATM2上输入错误的PIN码(ErrCounter = 2) 伙伴1在ATM1(ErrCounter = 3)上输入错误的PIN码。合作伙伴1的尝试(有电话)现在被拒绝了 伙伴2在ATM2(ErrCounter = 4)上输入错误的PIN。如果没有>=它会再次无限循环尝试。随着不公平的加剧,这个尝试也被拒绝了。
© www.soinside.com 2019 - 2024. All rights reserved.