Apache 로그 설정에서 HTTP 인증 사용자 이름을 기록하도록 지정할 수 있습니다. 대부분의 PHP 스크립트에는 자체 쿠키 기반 인증이 있습니다. 인증이 쿠키를 기반으로하더라도 PHP가 로깅 용 HTTP 인증 사용자 이름을 Apache에 제공 할 수 있습니까? 그렇다면 코드는 어떻게 생겼을까요? 그렇지 않다면 대안은 무엇입니까?PHP를 사용하고 HTTP 인증을 사용하지 않고 아파치 access_log에 사용자 이름 입력
답변
아파치는 모듈간에 데이터를 전달합니다. 노트. PHP를 Apache 모듈로 실행하는 경우 apache_note()
을 사용하여 메모를 가져오고 설정할 수 있습니다. 이 파일을 액세스 로그에 기록하려면 the %{note_name}n
log format string을 포함 할 수 있습니다. 이렇게해도 데이터가 다시 클라이언트로 누출되지는 않습니다. PHP에서
:
apache_note('username', $username);
서버 구성에서 :
아파치 당신이 메모에 응답 헤더를 복사 할 수 있습니다 아파치 2.4.7 이후LogFormat "%h %l %{username}n %t \"%r\" %>s %b" common_with_php_username
CustomLog logs/access_log common_with_php_username
어딘가에 다른 사용자 이름 &을 저장하고 로그에 쿠키 값 (보통 %{PHPSESSID}C
)을 기록하도록 허용 한 다음 추적 할 수 있습니다.
또 다른 옵션은 바람직 바로 session_start
후 클라이언트로 사용자 이름과 헤더를 전송하는 것입니다 :
PHP :
header('X-Php-Sess-User: '.$username);
때 CustomLog :의
%{X-Php-Sess-User}o
짧은 아파치 핸들러를 사용하여 내부 auth * 데이터 구조를 만 드는 것이 가장 좋은 방법은 환경 변수에 의존하는 것입니다. 당신은 당신의 PHP 코드
apache_setenv('USERID','jrodriguez',true);
을에 apache_setenv 사용하여 최고 수준의 환경 변수를 설정 한 후 ""% {USERID} 전자 "를 사용하는 대신 아파치 설정에서 LogFormat의 항목과 로그 파일에 값을 작성합니다 % U "물론
LogFormat "%v:%p %h %l %{USERID}e %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" envuid_combined
CustomLog /path/to/access.log envuid_combined
이 실제 HTTP의 인증을 수행하는 실제 자격 증명을 영원히 손실 될 수 있으므로 유 다른 곳 %를 절약 고려 - 새 필드 또는 병렬 로그 파일 중 하나.
은 환경 변수가 전역 변수가 아니기 때문에 신뢰할 수 없습니다. –
@Esben 정확히 무엇을 의미하는지는 모르지만 일반적으로 환경 변수는 글로벌 변수가 아닙니다. 위의 솔루션은 나를 위해 완벽하게 작동합니다. – rjmunro
. PHP를 Apache 모듈로 실행하지 않고 (예를 들어 PHP-FPM을 사용하는 경우) 로그 값을 클라이언트에 보내지 않으려면 (일반적으로
PHP :
header('X-Username: '.$username);
을 httpd.conf :
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{username}n\"" logfmtname
vhost.conf :
CustomLog logs/vhost-access_log logfmtname
# copy response-header value to note
Header note X-Username username
# unset response-header so client won't get it
Header unset X-Username
- 1. HTTP 인증을 사용하지 않고 Apache Jersey에서 인증 하시겠습니까?
- 2. 팝업없이 장고에서 아파치 인증을 사용하십시오.
- 3. PHP를 사용하지 않고 JQuery로 MySQL에 액세스하기
- 4. mod_rewrite를 사용하지 않고 PHP를 확장하지 않고 실행 하시겠습니까?
- 5. 이름 속성을 사용하지 않고 jQueryValidation을 사용하는 방법
- 6. cmd 사용자 이름 입력 프로세스
- 7. PHP 인증을 사용하는 HTTP 인증
- 8. HTTP 기본 인증을 사용하는 WCF
- 9. username 패스워드 인증을 사용하지 않고 서블릿 URL을 보호하기
- 10. Google App Engine 사용자 정의 사용자 인증을 사용하는 사용자 이름
- 11. 아파치 httpcomponents와의 HTTP 인증
- 12. PHP로 HTTP 인증을 사용하고 데이터베이스에 대해 입력 된 데이터를 실행하는 방법?
- 13. PHP를 사용하여 파일 다운로드 HTTP 인증을 위해 사용자 이름과 암호를 전달하여 지정된 URL에서
- 14. username, password, param1, param2 (문자열 배열)을 사용하여 컬을 사용하지 않고 PHP에서 http 게시 하시겠습니까?
- 15. URL에있는 사용자 이름/암호로 Apache 기본 인증
- 16. AWK : 일반 표현식을 사용하지 않고 아파치 날짜 비교
- 17. Windows 인증을 사용하고 사용자 지정 관리자를 등록하는 방법
- 18. Selenium에서 http 인증을 잊어 버림
- 19. 내가 PHP를 사용하고
- 20. WCF : 스트리밍과 사용자 이름/암호 인증을 동시에 사용하십시오.
- 21. 아파치 별칭 "추측"파일 이름
- 22. root에서 아파치 인증을 받았지만 /index.html에없는 경우
- 23. Windows 인증을 사용하여 클라이언트 사용자 이름 다시 가져 오기
- 24. 제출을 사용하지 않고 POST하는 방법?
- 25. 플래시를 사용하지 않고 사용자 마이크에서 녹음
- 26. Authlogic - 기본 HTTP 인증을 통한 인증
- 27. htaccess로 - 조용히 내가 PHP를 사용하고
- 28. 자바를 사용하고 라이브러리를 사용하지 않고 올바른 엔티티로 http 게시 요청을 작성하는 방법은 무엇입니까?
- 29. Twitter 사용자 이름 입력 필드 텍스트 플러그인!
- 30. 드루팔 (Drupal : 사용자 이름 입력 필드?
I 응답 헤더), 여기에 그것을 할 수있는 방법이있다 좋은 생각이라고 생각하지 마십시오. 별도의 로그 파일을 사용하지 않는 이유는 무엇입니까? –
AWStats와 같은 도구를 사용하여 간단한 통계를 작성하고 싶습니다. – chiborg