Apache log yapılandırmasında HTTP auth kullanıcı adının günlüğe kaydedilmesi gerektiğini belirtmek mümkün. Çoğu PHP betiğinin kendi tanımlama bilgisi tabanlı kimlik doğrulaması vardır. Kimlik doğrulama çerez tabanlı olsa bile, PHP'nin Apache'ye günlüğe kaydetme amacıyla HTTP auth kullanıcı adı sağlaması mümkün mü? Eğer evet ise, kod nasıl görünür? Yoksa, alternatifler nelerdir?PHP ile apache access_log'da kullanıcı adı ve HTTP auth olmadan
cevap
Apache, notları arasındaki verileri notları arasında geçirir. PHP'yi bir Apache modülü olarak çalıştırırsanız, not almak ve ayarlamak için apache_note()
'u kullanabilirsiniz. Daha sonra bunu erişim günlüğüne yazmak için the %{note_name}n
log format string'u ekleyebilirsiniz. Bu, herhangi bir veriyi müşteriye geri "sızmayacak". PHP
:
apache_note('username', $username);
sunucu yapılandırmasında:
Apaçi bir nota bir tepki-header kopyalamaya yarayan Apache 2.4.7 yanaLogFormat "%h %l %{username}n %t \"%r\" %>s %b" common_with_php_username
CustomLog logs/access_log common_with_php_username
& kullanıcı adlarını başka bir yerde oturum_aksesleri saklamak ve günlüğün içine tanımlama bilgilerini (genellikle %{PHPSESSID}C
) yazıp sonra izini geri bırakabilmeniz mümkün.
Başka bir seçenek en iyisi adet session_start
sonra müşteriye geri kullanıcı adıyla bir başlık göndermek olacaktır:
PHP:
header('X-Php-Sess-User: '.$username);
CustomLog: ait
%{X-Php-Sess-User}o
Kısa Bir Apache işleyicisini kullanarak, iç veri * veri yapılarına dokunmak için en iyi seçim, çevre değişkenlerine başvurmaktır. Eğer PHP kodu
apache_setenv('USERID','jrodriguez',true);
yılında apache_setenv kullanarak bir üst düzey ortam değişkeni ayarlamak ve sonra " "% {USERID} e" kullanarak yerine Apache yapılandırmasında LogFormat girişi ile günlük dosyasına değerini yazardı % u" elbette
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
, fiili HTTP auth gerçekleştiren gerçek kimlik bilgileri sonsuza kadar kayıp olacağını, bu yüzden u başka bir yere tasarrufu% düşünün - yeni bir alanda veya bir paralel günlük dosyasında ya.
bir ortam değişkeni global olamaz ve bu nedenle güvenilir olamaz –
@Esben Tam olarak ne demek istediğinizden emin değilsiniz, ancak genel olarak, hiç bir değişim değişkeni global değildir. Yukarıdaki çözüm benim için mükemmel çalışıyor. – rjmunro
. Eğer PHP'yi bir Apache modülü olarak kullanmıyorsanız (örneğin PHP-FPM'yi kullanıyorsanız) ve aynı zamanda günlük değerinin istemciye gönderilmesini istemiyorsanız (eğer bunu bir
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. Django rest-auth allauth e-posta adresleri, isim ve soyis ile, ve kullanıcı adı olmadan
- 2. HTTP üzerinden HTTP Auth - PHP_AUTH_USER ayarlanmadı mı?
- 3. Laravel 5: Apache php http kimlik doğrulaması
- 4. Django auth: maks. Kullanıcı adı uzunluğunu artırma
- 5. PHP ile WordPress veritabanı adı/kullanıcı adı/şifre almak
- 6. http temel auth
- 7. Apache ve Vernik http/https
- 8. Basit HTTP Auth REST webservice (Java + Jersey) ile nasıl kullanılır?
- 9. LDAP Auth olmadan Giwis ile Gitweb Kimlik Doğrulama?
- 10. SQL Server: Geçerli kullanıcı adı olmadan geçerli kullanıcı alın
- 11. Kurulum HTTP, PHP ve Apache kullanarak üstbilgileri sona erdiriyor
- 12. PHP HTTP Proxy Sunucusu
- 13. Test HTTP Basic Auth 2.2 +
- 14. Auth :: user(), kullanıcı
- 15. Apache HTTP Bileşenleri ile HTTP kimlik doğrulaması: zorlama gönderimini zorlamak
- 16. CakePHP kullanıcı adı ile giriş yapma veya Auth bileşeni kullanarak e-posta
- 17. PHP Zend Auth ve Zend ile Birim Testi ACL
- 18. Apache/PHP, hata sayfalarında HTTP Durum Kodu 200'ü döndürüyor
- 19. Giriş Facebook Bilinen kullanıcı adı ve şifre ile API
- 20. Kullanıcı için kullanıcı adı ve SID, ldap
- 21. PHP SoapClient(): "Kullanıcı Aracısı" ve "Kabul Et" HTTP Üstbilgisini gönder
- 22. Giriş yaptıktan sonra kullanıcı girişi kullanıcı adı? (PHP/JavaScript/HTML)
- 23. Monitör indirme ilerlemesi apache ile http bileşenleri
- 24. ip ülke php veya apache
- 25. apache http istemci isteği
- 26. PHP Dosya Yükleme Olmadan Form
- 27. Apache 500 ile PHP Fun Hatası
- 28. Xcode - Değişim Firma isim ve kullanıcı adı
- 29. PHP cURL indirme https sayfasından 0 bayta sadece kullanıcı adı ve şifre ile erişilebilir
- 30. Uttime ile Http digest auth kullanmak mümkün mü?
ben tepkisi-header), burada bunu yapmak için bir yoldur Bunun iyi bir fikir olduğunu düşünmeyin. Neden ayrı bir günlük dosyası kullanmıyorsunuz? –
Çünkü AWStats gibi bir araçla basit istatistikler yapmak istiyorum. – chiborg