ユーザがリクエストごとにクッキーをクリアしても、レート制限方法が機能するかどうかを判断するために単体テストを書く必要があります。既存のレート制限方法では、セッションを使用して要求をカウントします。私たちのセキュリティ専門家は、リクエストごとにクッキーをクリアすることでこれが簡単に回避されると言います。私は新しいセッションをシミュレートする方法や単体テストでクッキーをクリアする方法を知らない。サーバーはFlaskを使用するPython2.7です。既存のコードは:あなたはユニットテストを書くことFlask.test_clientを使用する場合はPython unittestでリクエストごとにクッキーを消去することをシミュレートします
def test_retry_protection(self):
#
prev1 = app.config['RETRY_PROTECTION_COUNT']
app.config['RETRY_PROTECTION_COUNT'] = 3
prev2 = app.config['RETRY_PROTECTION_SECONDS']
app.config['RETRY_PROTECTION_SECONDS'] = 5
username = 'retry.me'
password = 'ke52u&%y!jfueQ'
result = self.app.post('/add_password',
data=dict(username=username, password1=password,
password2=password))
assert '": "ok"' in result.data, result.data
for x in range(app.config['RETRY_PROTECTION_COUNT'] - 1):
result = self.app.post('/update_password',
data=dict(username=username, password1=password,
password2=password, password_old=password + 'wrong'))
assert 'User and password not correct' in result.data, result.data
result = self.app.post('/update_password',
data=dict(username=username, password1=password + 'change',
password2=password + 'change', password_old=password))
assert 'Excessive usage - wait 10 minutes to try again' in result.data, result.data
time.sleep(app.config['RETRY_PROTECTION_SECONDS'] + 1)
result = self.app.post('/update_password',
data=dict(username=username, password1=password + 'change',
password2=password + 'change', password_old=password))
assert '": "ok"' in result.data, result.data
app.config['RETRY_PROTECTION_COUNT'] = prev1
app.config['RETRY_PROTECTION_SECONDS'] = prev2
クッキーが自分でクリアされている場合、私は考えていませんそれを行う方法はありません。 –