2012-06-11 5 views
3

저는 직장에서 몇 가지 다른 PHP 쇼핑 카트를 사용하고 있으며 버전 관리하에 다양한 설정 파일을 얻으려고합니다. 지금까지 우리는 git에서 무시하고있었습니다. 물론, 우리는 프로덕션 수준의 암호를 다른 사람이 사용할 수 없기를 바랍니다. 게다가 대부분의 개발자는 고유 정보로 로컬 설치를 실행하고 있습니다. 아파치 환경에서 vars 설정

갑자기 우리가 아파치 가상 호스트 블록에서 환경 변수를 설정하고 PHP에서 액세스,과 같이 수 있다는 것을 기억 문제에 대한 우리의 시스템 관리자에게 얘기하는 동안 : SetEnv db_user "username"

PHP : <?php $config['db']['user'] = $_ENV['db_user'];

아파치

문제없이 작동하는 것처럼 보이지만 전에는 이런 식으로 보지 못했습니다. 이런 식으로 인증 정보를 처리 할 때 어떤 의미 (기술, 보안 등) 또는 제한 사항이 있습니까?

+0

환경 변수는 응용 프로그램 환경 (예 : 생산 대 준비 및 개발)을 구분하는 데 널리 사용됩니다. git 저장소에 액세스 할 수있는 사람들이 편안하지 않다면 실제 DB 자격 증명을 유지하는 것이 좋지 않지만 여기에서 더 많은 답변을 볼 수 있습니다. 그리고이 경우에는'$ _SERVER'가 아닌'$ _ENV'를 사용해야합니다. – lanzz

+0

네가 맞아, @ ranzz, $ _ENV는 내가 원하는 데이터에 접근하는 더 좋은 방법이다. 감사! –

+0

Heroku는 Facebook 앱 (앱 ID 및 비밀 키 저장)에 대해이 접근법을 기본적으로 사용합니다. 또한 중요한 정보가 소스에 구워지지 않아 코드를 더 이식성있게 만듭니다. – rbaker86

답변

2

이것은 the PHP Security Guide: Databases and SQL에서 제안 된 것과 매우 비슷합니다.

그들은 잠재적 인 문제 중 하나가 "phpinfo() 또는 print_r ($ _ SERVER) 같은 것을"호출하여 변수를 노출 할 위험이 있음을 지적합니다. 그래서 문제는 그 위험을 통제 할 수 있는지 여부와 그 가상 호스트에 액세스하는 모든 사람을 신뢰하는지 여부입니다 (컨텍스트에서 그 대답은 "예"일 가능성이 높습니다).

이들은 또한 루트 권한으로 만 읽을 수있는 파일에 이러한 자격 증명을 추가하여 추가 수준의 리디렉션을 추가 할 것을 제안합니다. 개발 컨텍스트에서 약간 편집 적이라면 배포시 적당 해 보입니다.

+0

연결이 설정되고 더 이상 자격 증명이 필요하지 않으면 환경 변수를 설정 해제 할 수 있습니다. – lanzz