Как безопасно хранить пароли, используемые для входа на сторонние веб-сайты

Прежде всего, я не ищу способ хранения паролей моего собственного сайта, чтобы пользователи могли войти (что я мог бы легко использовать с помощью соленых хэшей пароля).

Я создаю персональную веб-страницу, где я бы хотел проверить мой баланс PayPal на домашней странице. Для этого мне нужно сохранить учетные данные PayPal в базе данных MySQL, поэтому я могу получить его позже от PHP для входа в систему PayPal и очистить свой баланс. Я знаю, что могу просто оставить свои учетные данные в PHP-скрипте, но я хочу разрешить некоторым пользователям использовать этот сайт (каждый пользователь регистрируется в своей учетной записи, зарегистрированной на моем сайте).

Итак, мне нужен безопасный способ хранения паролей PayPal на моем сервере и не сохранения в текстовом формате. Я не очень разбираюсь в шифровании, поэтому я хотел бы спросить, что это лучший способ сделать это.

Я не уверен, должен ли этот вопрос идти на сайт программистов или он прямо здесь; извините, если я сделал не так.

Благодарю.

Solutions Collecting From Web of "Как безопасно хранить пароли, используемые для входа на сторонние веб-сайты"

Соответствующий ответ: « Не делай этого ».

Чтобы ответить на ваш второй вопрос:

Как Google Кошелек или Paypal хранят номер и сведения о безопасности кредитных карт

Вы можете начать с чтения о PCI Compliance с очень интересной страницей сборов .

Просто потому, что нет ответа на мнение PayPal по этому вопросу:

1.3. Идентификатор приложения и учетные данные API. PayPal предоставит вам уникальный конфиденциальный идентификационный код, сертификат и идентификатор приложения, которые позволят вам использовать Инструменты разработчика. PayPal может также предоставить вам учетные данные API для тестирования и / или производства. PayPal может немедленно прекратить действие или аннулировать идентификатор вашего приложения и / или API по любой причине по собственному усмотрению PayPal. Вы не можете продавать, передавать, сублицензировать или раскрывать свой идентификатор приложения, учетные данные API или другие учетные данные учетной записи PayPal третьим лицам, кроме поставщика услуг, выполняющего услуги от вашего имени, и вы соглашаетесь незамедлительно уведомлять PayPal о любых нарушениях вашего обязательств в этом предложении. Если вы продаете или иным образом передаете свое приложение или разрешаете ему использовать API-интерфейс, PayPal соглашается выдать новый идентификатор приложения вызывающему API-интерфейсу, работающему с вашим приложением. API Caller несет ответственность за любые персональные данные, которым PayPal поручается передать на него. Вы несете ответственность за все действия, выполняемые с вашим идентификатором приложения, учетными данными API или другими учетными данными учетной записи PayPal.

а также

5.2.1. Юридические соглашения и связанные с ними политики. Ваше приложение и ваше использование Инструменты разработчика должны соответствовать следующим правовым соглашениям и политикам:

(а) настоящего Соглашения,

(б) Пользовательское соглашение, как версия, применимая к вам, так и любая другая версия, которая применяется к пользователям ваших услуг с поддержкой PayPal; если вы принимаете пользователей из других стран, кроме тех, в которых вы проживаете (или зарегистрированы, если компания), то для этого пользователя применяется версия Пользовательского соглашения для страны пользователя;

Отметив, что для хранения учетных данных субъектов пользователя вам необходимо иметь «приложение», разработанное для использования с PayPal, даже если вы не используете инструменты разработчика или API.

Связано с: Соглашение для разработчиков PayPal

И в пользовательском соглашении

Вы должны немедленно уведомить PayPal, если считаете:

была несанкционированная транзакция, несанкционированный доступ к вашей учетной записи или возникновение другой ошибки;

в вашем аккаунте есть ошибка (вы можете получить доступ к своей учетной записи, войдя в свою учетную запись) или подтверждение транзакции, отправленное вам по электронной почте;

ваш пароль или PayPal Mobile PIN был скомпрометирован;

ваша дебетовая карта PayPal или мобильный телефон, активированный PayPal Mobile, был утерян, украден или деактивирован; или

вам нужна дополнительная информация о транзакции, указанной в отчете или подтверждении транзакции.

Вы не должны этого делать. Но, поскольку вы, вероятно, все равно, я бы предложил шифровать пароль пользователя PayPal паролем, который они используют для входа на ваш сайт.

Правильное шифрование на основе пароля использует распознанную функцию вывода ключей, например PBKDF2. В дополнение к паролю для вывода ключа потребуется некоторая соль, которая должна быть сгенерирована генератором криптографических случайных чисел и несколькими раундами, которые должны быть не менее 60 тысяч для PBKDF2.

Для аутентификации вы должны использовать тот же алгоритм (с другой солью); после получения ключа шифрования с их пароля, используйте его для шифрования постоянного, известного обычного текста, например, вашего имени хоста. Если он соответствует значению, установленному во время регистрации, они аутентифицируются.

Вы должны быть очень осторожны с этим. Вам необходимо тщательно протестировать свой сайт и БД регулярно, чтобы убедиться, что нет дыр в безопасности. Оплатите профессионалу, чтобы сделать это за вас.

Если бы это был я, и я был готов это сделать, я бы сохранил пароли на своем сервере, зашифровав их с помощью симметричного алгоритма шифрования (используя AES) с помощью секретного ключа. Храните секретный ключ в очень безопасном месте. Хранение паролей в текстовом виде (как вы отметили) является вопиющим грехом, а хранение их под двухсторонним шифрованием лишь немного лучше. Лучшей практикой является использование одностороннего хэша с солью.

Повторно повторить то, что говорили все остальные: не храните на своем веб-сайте (в самом коде или в базе данных) пароль пользователя (включая ваш собственный).

Тем не менее, можно интегрировать paypal на свой сайт и читать ВАШ СОБСТВЕННЫЙ баланс PayPal, используя их API интеграции. Прошло много времени с тех пор, как я работал с API paypal, но я знаю, что это возможно. Вы можете использовать API транзакционной информации, чтобы просто получить баланс PayPal в учетной записи, используя вызов GetBalance. Для этого вам необходимо настроить учетную запись разработчика Paypal, получить ключ API и иметь возможность вызывать API SOAP из вашего веб-приложения. Смотрите здесь, чтобы начать работу с классическими API-интерфейсами Paypal .

В целом, это может быть слишком много работы для реализации функции на вашей личной веб-странице.