Minor non-breaking changes to captcha

Added image/jpeg content-type header to /captcha.jpg. Made unsigned digests
urlsafe (as they were intended to be).
このコミットが含まれているのは:
n9k 2022-02-20 09:15:10 +00:00
コミット 41ee90870d
3個のファイルの変更4行の追加4行の削除

ファイルの表示

@ -5,9 +5,9 @@ from quart import current_app
from anonstream.helpers.captcha import generate_captcha_digest, generate_captcha_image
CONFIG = current_app.config
CAPTCHAS = current_app.captchas
CAPTCHA_FACTORY = current_app.captcha_factory
CAPTCHA_SIGNER = current_app.captcha_signer
CAPTCHAS = current_app.captchas
def generate_random_captcha_solution():
return ''.join(

ファイルの表示

@ -31,7 +31,7 @@ def _generate_captcha_unsigned_digest(salt, solution):
+ solution.encode()
)
raw_unsigned_digest = hashlib.sha256(parts).digest()[:16] + salt
return base64.b64encode(raw_unsigned_digest).removesuffix(b'=')
return base64.urlsafe_b64encode(raw_unsigned_digest).removesuffix(b'=')
def generate_captcha_digest(signer, salt, solution):
unsigned_digest = _generate_captcha_unsigned_digest(salt, solution)
@ -44,7 +44,7 @@ def check_captcha_digest(signer, digest, answer):
try:
unsigned_digest = signer.unsign(
digest,
max_age=CONFIG['CAPTCHA_LIFETIME']
max_age=CONFIG['CAPTCHA_LIFETIME'],
)
except BadTimeSignature:
result = Answer.BAD

ファイルの表示

@ -37,4 +37,4 @@ async def captcha(user):
if image is None:
return abort(410)
else:
return image
return image, {'Content-Type': 'image/jpeg'}