Как не жестко закодировать строку в программном обеспечении?
Мне интересно, как можно не жестко закодировать строку, например, IP в каком-либо программном обеспечении или в программном обеспечении удаленного подключения.
Я слышал об эксперте по кибербезопасности, который нашел IP-адрес кого-то, кто взламывал людей с помощью его программного обеспечения, и после этого они отслеживали его.
Итак, как я могу избежать жесткого кодирования моего IP-адреса в программном обеспечении и как люди могут найти мой IP-адрес, если я сделаю его жестким кодом?
5 ответов
Есть несколько способов скрыть жестко закодированную строку. Одним из самых простых является XOR битов с другой строкой или повторяющейся константой. Таким образом, вы можете иметь два жестко закодированных коротких массива, которые при совместном использовании XOR создают строку, которую вы хотите скрыть.
Если вы хотите скрыть это, зашифруйте его, вы увидите это много на github, где люди случайно публикуют свои ключи aws или что не нужно, потому что они не использовали его как "секрет". всегда шифруйте важные данные, никогда не используйте жестко закодированные значения, такие как ip, так как это легко изменить, какой-то тип dns resolver может помочь вам удержать маршрут. в данном конкретном случае вы упомянули, что использование DNS для указания прокси поможет замаскировать конечную точку ip.
Вы можете сделать любое из них: 1) прочитать строку из файла, 2) прочитать строку из базы данных, 3) передать строку в качестве аргумента командной строки
Одним из вариантов является использование асимметричного шифрования, вы можете запросить приватную строку с сервера, использующего ее (см. SSL/TLS). Если вы хотите сделать это локально, вы должны записать / прочитать файл (ОС должна позаботиться об авторизации посредством доступа пользователя)
На самом деле, лучшая практика - избегать включения конфиденциальной информации в ваш код (даже если ваш репозиторий является закрытым). Лучшим способом будет либо чтение из БД (что также сопряжено с некоторыми рисками, поскольку вам нужно где-то хранить учетные данные БД), либо добавление данных в переменную среды (особенно, если у вас есть постоянная интеграция, чтобы вы могли отделить код из учетных данных, поместив их в память с помощью начальной загрузки).