PHP Güvenlik

5 Cevap php

Ben bir LAN üzerindeki başsız linux sunucu makinesinde bazı sunucu tarafı işi yapmak için bazı PHP komut yazdım. Örneğin, ben http://ipadress/php/operations.php?operation=registerUser&uName=X&uAlias=Y. Şimdi, benim işlemler komut böylece güvenli istiyorum; LAN üzerindeki herkes onu aramak ve / veya çalıştırabilirsiniz ama; ... bir önceden paylaşılan anahtar yalnızca olanlar ...? Bu ben de şaşırıp nokta, requiring a pre-shared key through a GET/POST parameter would be easisest and probably the worst solution. / php komut istemci-sınırlama ulaşmanın daha güvenli bir yol (lar) nelerdir nedir?

(Ben oturumu başlatırken belki müşteri bir şifrelenmiş anahtar dosyası gerektiren düşünme ve scure oturumu başladı sığınak herkese erişimi inkar ediyorum? ... Bu sadece benim teorik olarak düşünme var, bunu yapmak için başlamak için hiçbir fikrim yok php.)

edit: Ben yazı hatırlıyorum clealrly "requiring a pre-shared key through a GET/POST parameter would be easisest and probably the worst solution." özgün benim görevde, çok nazik tekrar tekrar aynı şeyle yanıtlayan durdurun lütfen.

edit2: şeyleri temizlemek için: operations.php aynı LAN üzerindeki istemci makinelerde bir program tarafından denir. Ben olmayan herhangi bir istemci veya yabancı makine operations.php kullanmak istemiyorum ve herkes tarayıcısı aracılığıyla erişebilir olmak istemiyorum. Bunu engellemek için güvenlik / kimlik doğrulama yöntemi çeşit gerektirir. Ben giriş formları veya basit HttpAuths aramıyorum ... Ayrıca, ben sadece IP üzerinde sınırlamalar koymak edemez adresleri çünkü; sadece pratik ve sabit kodlanmış olmayan şifrelenmiş parolaları daha biraz kötü değil ...

5 Cevap

Eğer Mod_Ssl'li Apache kullanıyorsanız, bu force clients to authenticate using certificates, belirli bir sertifika yetkilisi tarafından imzalanmış olabilir.

Sizin imzalama sertifikası, sizin sunucunun sertifika ve bir sertifika müşterilerine dağıtmak için: Teorik olarak, sadece üç sertifika oluşturabilirsiniz.

Bu genellikle olsa, kötü bir fikir olarak kabul edilir. Her müşteri için ayrı bir sertifika dağıtmak için genellikle daha iyidir.

Aklıma en basit yolu:

<?php

if ($_REQUEST['key'] == '38lkjsdIEjrkd' && $_SERVER['REMOTE_ADDR'] == 192.168.1.20) {

// load your web page

} else {

// show login or message about authentication

}

Umarım yardımı olur.

Bu web sayfaları için kimlik doğrulama ve yetkilendirme ile ilgili genel bir soru soruyorsun gibi geliyor bana.

Bunu başarmak için birçok farklı yolu, elbette, vardır. Kurulum sayfa / komut erişmeden önce geçerli bir kullanıcı adı / şifre girmek için kullanıcı gerektiren bir oturum tabanlı kimlik doğrulama sistemi olabilir. Bu kullanıcının onlar doğrulanır sürece sayfaya erişmeye çalıştığında sunulan bir giriş formu gibi basit olabilir. Sonra sayfalar boyunca kimlik doğrulaması için kalıcı PHP'nin yerleşik oturum yönetimi kullanabilirsiniz.

Alternatif olarak, HTTP auth yoluyla, Apache örneğin, web sunucu seviyesinde kimlik doğrulaması yapabilirdi.

I second jonstjohn's opinion on HTTP authentication through creating a .htaccess (to allow only certain addresses to access the script) and .htpasswd (to define users who have access). However, this is true if you only need a quick solution for a few scripts.

Sınırlı erişim gerektiren daha fazla komut dosyası varsa, en iyi çözüm kullanıcı günlük özen ve kullanıcı oturumu takip etmek için bir sınıf oluşturmak olacaktır.

Genel olarak, komut şifreleri ve sihirli numaraları gömme kötü bir kodlama tarzı olarak kabul edilir. Söz değil bu zor kodlanmış s korumak gerçekten zor "eğer".

İstediğiniz güvenlik seviyesine bağlıdır. Temel Http Auth kurmak basittir. Bkz the manual.