2017-09-15 1 views
0

ユーザがリクエストごとにクッキーをクリアしても、レート制限方法が機能するかどうかを判断するために単体テストを書く必要があります。既存のレート制限方法では、セッションを使用して要求をカウントします。私たちのセキュリティ専門家は、リクエストごとにクッキーをクリアすることでこれが簡単に回避されると言います。私は新しいセッションをシミュレートする方法や単体テストでクッキーをクリアする方法を知らない。サーバーは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 
+0

クッキーが自分でクリアされている場合、私は考えていませんそれを行う方法はありません。 –

答えて

1

あなたはクッキーにアクセスするためにそのcookie_jar属性を使用することができます。

app = flask.Flask(__name__) 
client = app.test_client() 

client.cookie_jar.clear() 
# or 
client.cookie_jar.clear_session_cookies() 

Official documentation on CookieJar objects

+0

まさに私が望むもの。 – Martlark

関連する問題