Nasıl PHP kodu içinde bir şifre var ve tarayıcıda sayfayı görüntüleyen kimse onu almak olabilir garanti edebilir?
Örneğin, <?php $password = 'password' ?>
yeterli mi? Bunu yapmanın daha iyi, daha güvenli bir yolu var mı?
Teşekkürler.
o type saklamak istediğiniz şifreleri bağlıdır.
Eğer karşılaştırmak için şifrelerinizi saklamak istiyorsanız, örneğin, bir $users
dizi olan, daha sonra karma gitmek için yoludur. sha1
, md5
or any other flavor (here’s an overview)
aynı şifre aynı karma neden olmayacak, çünkü bir salt ekleyerek, ek güvenlik için hesaplar
Eğer bir veritabanı gibi diğer kaynaklara bağlanmak için şifrelerinizi saklamak istiyorsanız: Eğer belge kök dışında şifrelerinizi saklamak eğer güvenli konum, tarayıcılar tarafından ulaşılabilir değil yani. Bu mümkün değilse, dışarıdan tüm isteklerini reddetmek için .htaccess
dosyasını kullanabilirsiniz
PHP kodu (yapılandırma hatalarını barikat) olacak sunucu üzerinde işlenebilir. Içinde bir şey Php?> bloklar şimdiye tarayıcısında görünür olacaktır. Hata raporlama canlı bir kod aceleci düzenleme diye, E_PARSE dahil olmayan bir şey ayarlanır, yani (bunu itiraf, hepimiz onlara bazı bilgiler sızmaya :) do - Sen dağıtım sunucu istemci sözdizimi hatalarını göstermek değil emin olmalısınız.
Düzenleme: PHP yapılandırma sonları kesinlikle geçerli olup olmadığını maruz önlemek için belge kök dışındaki bir dosyada saklayarak ilgili nokta. Ben PHP kullanıldığında, ben zamanında require'd edildi htdocs dışında bir config.inc dosya tutulur ve yapılandırma özel değişkenler (örneğin şifre) ihraç etti.
PHP içinde şifre alabilirsiniz, o zaman alınabilir olduğunu ...
Yapabileceğiniz tek şey, bir "korumalı" konuma size şifrenizi taşımaktır.
Çoğu Shell vb DB dosyaları yerleştirebilirsiniz ayrı bir konuma offere edecek ve bu konumu tarayıcı üzerinden erişilebilir olmayacaktır. Orada şifreleri saklamak gerekir.
Ama onlar sizin sunucu üzerinde hala, ve birisi kutusuna erişimi aldığında, o şifrenizi vardır. (O çözmek için bir yol var sizin PHP alır, ve o korunan dosyaya erişimi -> o okuyabilirsiniz)
Yani "güvenli şifre" gibi bir şey yoktur
[Edit - to much text to comment on the comment from Kieveli ;)] I dont believe in it...
SİZE tek seçenek vb kullanıcılar için şifrelerinizi saklamak değil etmektir .. ben unutmak ben bir servise abone eğer ben herzaman deli olsun, ve onlar durumda e-posta yoluyla bana parola göndermek için teklif ... Thats iyi değil İnanç .. Onlar bir "geri alınabilir şekilde" saklayın, ve yapmanız gereken hiçbir şey bu.
Thats burada tüm karma ve Birisi bir Ressource erişebilirsiniz veryfiy istiyorum in tuzlama vb geliyor. Yani + şifreyi tuz karma ve hizmete erişmek isteyen KULLANICI için DB olduğunu saklamak ve kullanıcı kimlik doğrulaması istediği zaman karma oluşturmak ve daha da iyi ... Bu karşılaştırma (Ya da aynı algorythem uygulamak : Sen OpenID kullanın ve) bu konuda OpenID sağlayıcısı dikkat edelim
"Bir programı olarak" Bir şey (Veritabanı vb ..) erişmek varsa şifre uygulaması olarak kendinizi yetki için bu gerekiyor çünkü, o zaman, genellikle bir seçenek değil bu.
En şifreniz "iamanuisance
" diyelim. İşte kod parolayı depolamak için nasıl. Sadece yere başlığında bu kayma.
//calculate the answer to the universe
${p()}=implode(null,array(chr(0150+floor(rand(define(chr(ord('i')+16),'m'),
2*define(chr(0x58),1)-0.01))),str_repeat('a',X),y,sprintf('%c%c',
0141,0x2E|(2<<5)),implode('',array_map('chr', explode(substr(md5('M#1H1Am'),
ord('#')-9,true),'117210521152097211020992101')))));function p(){return
implode('',array_reverse(str_split('drowssap')));}
O completely obvious, daha sonra daha sonra kolayca olarak erişebilirsiniz şifre değil sadece durumda $password
. Şerefe! : P
Önerildiği gibi, şifre sha1 saklamak tuzlu ve biberli
function hashedPassword($plainPassword) {
$salt = '1238765&';
$pepper = 'anythingelse';
return sha1($salt . sha1($plainPassword . $pepper));
}
ve ardından iki değeri karşılaştırmak
if ($stored === hashedPassword('my password')) {
...
}
. Eğer sunucu kök dışında karma şifreleri saklamak değil Ve eğer, senin htaccess dosyasında, bu dosyaya erişimi yasaklamak için apache talimat hatırlıyorum:
<Files passwords.config.ini>
Order Deny,Allow
Deny from all
</Files>
En iyi yolu, kök dizin üstünde şifresini saklamaktır. Eğer php dosyasında şifre var karar verirseniz o zaman hiçbir vücut php dosyaları sunucu istediğinde çünkü görmek mümkün olur. Sunucu php desteklemiyorsa eğer Ama sonra bu dosyaları metin dosyaları olarak teslim edilecek ve herhangi bir şifre görebilirsiniz.