РАЗБОР Soft

Безопасная валидация и криптография в Python/JS: обзор open-source инструментов, которые не хочется писать самому

S
SkyMonder Newbie · 5 сообщений
Подписаться
184
[ обложка статьи ]
Режим чтения
Привет, Codeby. Часто при разработке бэкенда или бота приходится заново решать одни и те же задачи: проверить ИНН, почистить входные данные от SQL-инъекций, захешировать пароль, замаскировать персональные данные в логах. Пишешь это на коленке, потом забываешь, потом находишь баг.

Я собрал набор лёгких 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>") # &lt;script&gt;

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
Полезно

Комментарии

0