РАЗБОР
Soft
Безопасная валидация и криптография в Python/JS: обзор open-source инструментов, которые не хочется писать самому
[ обложка статьи ]
Режим чтения
Привет, Codeby. Часто при разработке бэкенда или бота приходится заново решать одни и те же задачи: проверить ИНН, почистить входные данные от SQL-инъекций, захешировать пароль, замаскировать персональные данные в логах. Пишешь это на коленке, потом забываешь, потом находишь баг.
Я собрал набор лёгких open-source пакетов, которые закрывают эти задачи. Без зависимостей, с тестами и одинаковым API для Python и JavaScript.
python
from sky_validate_ru import inn, snils
inn.is_valid("7707083893") # True (Сбербанк)
snils.format("11223344595") # "112-233-445 95"
На JS то же самое через @skypackages/validate-ru. Это спасает от мусора в базе и кривых данных в CRM.
python
from sky_crypto import hash_password, encrypt, decrypt
hashed = hash_password("secret") # PBKDF2, 600 000 итераций
key = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
encrypted = encrypt("данные", key) # AES-256-GCM
На выходе — строка, которую можно безопасно хранить и передавать.
python
from sky_sql_escape import quote_string
from sky_html import escape
safe_sql = quote_string("it's") # 'it''s'
safe_html = escape("<script>") # <script>
python
from sky_mask import mask_email, mask_card
mask_email("ivan@example.com") # "i***n@example.com"
mask_card("4111111111111111") # "** ** **** 1111"
python
from sky_id import uuid_v7
print(uuid_v7()) # "018f4a3e-..."
Проект некоммерческий, лежит на GitHub. Если пригодится — берите, форкайте, кидайте в issues, что ещё стоит добавить.
GitHub: github.com/skytech-alt/SkyPackages
Сайт: skypackages.onrender.com
Я собрал набор лёгких open-source пакетов, которые закрывают эти задачи. Без зависимостей, с тестами и одинаковым API для Python и JavaScript.
1. Валидация российских реквизитов
Вместо самописных регулярок. Проверка контрольных сумм, а не просто длины.python
from sky_validate_ru import inn, snils
inn.is_valid("7707083893") # True (Сбербанк)
snils.format("11223344595") # "112-233-445 95"
На JS то же самое через @skypackages/validate-ru. Это спасает от мусора в базе и кривых данных в CRM.
2. Криптография
Сразу правильная, без изобретения велосипедов.python
from sky_crypto import hash_password, encrypt, decrypt
hashed = hash_password("secret") # PBKDF2, 600 000 итераций
key = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
encrypted = encrypt("данные", key) # AES-256-GCM
На выходе — строка, которую можно безопасно хранить и передавать.
3. Защита от инъекций
Экранирование для SQL, HTML и regex. Мелочь, которая предотвращает XSS и SQLi на этапе сборки запроса.python
from sky_sql_escape import quote_string
from sky_html import escape
safe_sql = quote_string("it's") # 'it''s'
safe_html = escape("<script>") # <script>
4. Маскировка PII для логов
Чтобы в логах не светились телефоны, email и номера карт.python
from sky_mask import mask_email, mask_card
mask_email("ivan@example.com") # "i***n@example.com"
mask_card("4111111111111111") # "** ** **** 1111"
5. Безопасные ID
UUID v7 (сортируемые по времени), ULID, NanoID. Без них не обходится ни одна система, где важна уникальность и скорость поиска по базе.python
from sky_id import uuid_v7
print(uuid_v7()) # "018f4a3e-..."
Что по надёжности
Все пакеты проходят pytest и vitest, не тянут за собой внешние зависимости и имеют одинаковую структуру API. Если пишете на Python — берёте питоновскую версию, если на Node.js — js-версию. Логика одна.Проект некоммерческий, лежит на GitHub. Если пригодится — берите, форкайте, кидайте в issues, что ещё стоит добавить.
GitHub: github.com/skytech-alt/SkyPackages
Сайт: skypackages.onrender.com
Содержание
Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
Перейти к курсу →
Комментарии
0