瀏覽代碼

feat(api): use Python's secrets module for obtaining randomness

Nils Wisiol 5 年之前
父節點
當前提交
29f7411b02
共有 2 個文件被更改,包括 3 次插入4 次删除
  1. 1 2
      api/desecapi/models.py
  2. 2 2
      api/desecapi/pdns_change_tracker.py

+ 1 - 2
api/desecapi/models.py

@@ -9,7 +9,6 @@ import uuid
 from base64 import urlsafe_b64encode
 from base64 import urlsafe_b64encode
 from datetime import timedelta
 from datetime import timedelta
 from hashlib import sha256
 from hashlib import sha256
-from os import urandom
 
 
 import psl_dns
 import psl_dns
 import rest_framework.authtoken.models
 import rest_framework.authtoken.models
@@ -183,7 +182,7 @@ class Token(ExportModelOperationsMixin('Token'), rest_framework.authtoken.models
     plain = None
     plain = None
 
 
     def generate_key(self):
     def generate_key(self):
-        self.plain = urlsafe_b64encode(urandom(21)).decode()
+        self.plain = secrets.token_urlsafe(21)
         self.key = Token.make_hash(self.plain)
         self.key = Token.make_hash(self.plain)
         return self.key
         return self.key
 
 

+ 2 - 2
api/desecapi/pdns_change_tracker.py

@@ -1,4 +1,4 @@
-import random
+import secrets
 import socket
 import socket
 
 
 from django.conf import settings
 from django.conf import settings
@@ -85,7 +85,7 @@ class PDNSChangeTracker:
             return True
             return True
 
 
         def pdns_do(self):
         def pdns_do(self):
-            salt = '%016x' % random.randrange(16 ** 16)
+            salt = secrets.token_hex(nbytes=8)
             _pdns_post(
             _pdns_post(
                 NSLORD, '/zones?rrsets=false',
                 NSLORD, '/zones?rrsets=false',
                 {
                 {