2013-02-21 9 views
1

백그라운드 프로세스에서 API에 연결하기 위해 제 PHP 응용 프로그램에 타사 응용 프로그램 암호를 저장해야합니다. DB에 암호를 저장해야하며 암호는 응용 프로그램의 각 사용자를위한 것입니다. 그러나 나는 그것을 회수하기 위해 그것을 저장하는 올바른 방법이 무엇인지 모른다.내 앱에서 타사 애플리케이션의 비밀번호를 저장하는 방법은 무엇입니까?

나는 암호화없이 암호를 저장하려면하지는하지만이

어떤 생각을 할 수있는 가장 좋은 방법 (쉽게)입니다 알고하지는?

답변

2

API에 사용할 수있는 일종의 OAuth 메커니즘이 없다면 일반 텍스트로 저장할 수도 있습니다. 공격자가 암호의 암호화 된 형식에 액세스하면 암호를 해독하는 코드에 액세스 할 가능성이 높습니다.

내 선호하는 방법은 다음과 같습니다 항상되도록 PHP 인터프리터를 통해 실행있어 파일 확장자를 사용

<?php 
$app_creds = array(
    'username' => 'sammitch', 
    'password' => 'isgreat' 
); 

<?php 
require('inc.credentials.php'); 
app_login($app_creds['username'], $app_creds['password']); 
unset($app_creds); 
  1. actual_code.php

    inc.credentials.php 파일은 일반 텍스트로 제공되지 않습니다.

  2. 우발적으로 출력되는 내용이 없도록 항상 ?>을 닫습니다. [가장 가능성있는 공백]
  3. unset()은 대부분 편집증이지만 코드 삽입의 경우입니다.
+0

DB에 비밀번호를 저장해야하며, 비밀번호는 관리자 용도가 아닌 애플리케이션의 각 사용자 용입니다. 어떻게 할 건데? 그러나 훌륭한 방법입니다! – Sangar82

+0

@ Sangar82 내 견해는 여전히 평문에 관한 것이지만, 단순히 암호를 분실 할 가능성이있는 대신 모든 사용자의 암호 데이터베이스를 보유하고 있기 때문에 이는별로 좋은 생각이 아닙니다. 유일한 * 좋은 * 대답은 OAuth 토큰이나 비슷한 것을 사용하는 것이지만, API가 지원하지 않는다면 할 수있는 일이 많지 않습니다. 작은 SQL 주입으로 암호가 노출 될 가능성을 줄이기 위해 [암호 암호화] (http://stackoverflow.com/a/6639179/1064767)를 확실히 할 수 있지만 누군가가 페이지의 소스에 들어가야 만합니다 벌거 벗었다. – Sammitch

관련 문제