Вам нужен API обратного геокодирования на основе IP-адреса ... например, - тот, который из ipdata.co . Я уверен, что есть много доступных вариантов.
Однако вы можете позволить пользователю переопределить это. Например, они могут быть на корпоративной VPN, что делает IP-адрес похожим на , как на другую страну.
Сначала я хотел бы перефразировать. Вам нужен инструмент статического анализа, который будет выполнять некоторые пользовательские проверки, например, на наличие проблем с безопасностью.
Я бы начал с pylint
, с его расширениями . В Github есть программа проверки образцов. Хорошим моментом здесь является то, что вы можете включить это в инструменты CI / CD без особой работы. Проблема здесь может заключаться в том, что компоновщик может быть проинформирован, чтобы не рассматривать что-то как проблему. С одной стороны, это прекрасно, так как md5 может использоваться в некоторых областях, но это может привести к утечке ... Если смотреть таким образом, все, что вы можете сделать, это сообщить.
Другой вариант - проверка безопасности, которая может работать с кодом Python. Я использую lynis на моем сервере. Они используют обычную оболочку Linux. На практике вы можете grep
написать код на python, чтобы увидеть, что там что-то не так. Я бы посоветовал пойти туда и проверить, что они ищут и как это делается. Если не пойти по этому пути - чем, может быть, для вдохновения. Ложные срабатывания также должны быть рассмотрены здесь. Итак, вопрос в том, хотите ли вы разобраться с этим самостоятельно или действительно с разработчиками ...
Я бы начал с некоторых проверок - таких как md5 / sha1, а затем расширил. Обязательно понятно, что проверено, а что нет. Это выглядит действительно сложно, но я бы попробовал. Может быть, расширение с открытым исходным кодом до pylint
, на github
? Таким образом, вы можете получить поддержку от других! Если так - дайте мне знать:)
Вы можете создать небольшую базу данных или словарь («имя библиотеки»: [method1, method2]) из популярных крипто-библиотек и из этих библиотек, методы которых относятся к небезопасным сценариям использования.
Затем вы сначала выполните поиск, чтобы узнать, действительно ли библиотека (ключ) используется проектом и использует ли она небезопасные методы (значение). Вам не нужно использовать регулярные выражения, просто подумайте, как вы будете искать одну строку в текстовом файле. Но если вам нужна эффективность, это может быть рекомендовано :) и что-то интересное для развития, это только мои мысли.
Однако вы можете использовать Sonarqube и интегрировать его в свой конвейер сборки, он поддерживает python, и я знаю, что он проверяет слабое использование крипто в проектах C #, он бесплатный и полностью автоматизированный, поэтому он идеально подходит для небольших / больших команд:) [ 113]
Удачи, приятель!