Bir php değişken veya php sabiti düz metin parola depolamak için hiç Tamam mı?

8 Cevap php

Söz başı olarak, bu gibi php sayfalarda şifreleri saklamak için güvenli

$password = 'pa$$w0rd';

Kullanıcıların göremiyorsanız, doğru, güvenli mi?

EDIT: Some people actually suggested using hash, however, there would be a problem with database server connection password, wouldn't it?

8 Cevap

Kısa cevap yok hem de, ve Duruma göre değişir.

Bu yanlış yerde basit bir sunucu yapılandırma hatası veya bir yankı daha no başka nedenle dünyaya maruz olabilir, özellikle bir web erişilebilir bir konumda, düz metin parolaları saklamak için neredeyse hiç iyi bir fikirdir.

If you MUST store a password, (which is possible) you could try to store it outside the webroot, eg /var/www/public_html/ Put your codez here
/var/www/includes/ Put your passwords here

Bile daha iyi (örn. veritabanı sarıcı) için şifre gerekiyor sistemine sahip olmak zaten örneği bir nesne dönecekti. böylece yerine sormak yerine $databasepassword Eğer bir PDO nesnesi için sormak ve webroot dışında veritabanı sınıfları saklayın.

Bu Bağlıdır saldırı vektörleri birisi bu şifre metin erişim neden ne gelir, ve bu dosya sistemi içinde zaten olmalarını gerektirecek, eğer öyleyse, muhtemelen yine mahvolduk.

Ayrıca, eğer onun supa-secrit abone içerik şifre, meh, kaybettim tüm veritabanı eğer um, sizin için iyi bir online bankacılık bilgilerini eğer, bir sorun olabilir, bazı abonelik ücreti olduğunu.

Şifre koruduğu şey ne kadar değerli olduğunu?

Güvenli nasıl tanımlamak bağlı olarak, herhangi bir yaklaşımın olumlu ve olumsuz yönleri vardır.

Eğer gerçekten kaynağında bir parola saklamak istiyorsanız, bu tür bir şey yapmak için iyi bir fikir olabilir:

Dosya: config.php

if( ! defined('IN_CODE') ) die( 'Hacking attempt' );

define( 'PASSWORD_HASH', '098f6bcd4621d373cade4e832627b4f6' );

Dosya: index.php

define( 'IN_CODE', '1' );

include( 'passwd.php' );

if( md5($password) == PASSWORD_HASH )
...

Düz metin asla iyi bir fikir değildir, her zaman saklamak istediğiniz parola hash saklayın.

Ayrıca, ana sourcefile Bu gibi tanımlar ayırmak için deneyin.

Genellikle bunu göremiyorum. Kötü bir şey sunucuda olur ancak sunucu yürütmeden w / o düz metin olarak php kodu dönecektir ve bu nedenle kullanıcı tüm bu dosyanın kaynağını ve aynı zamanda şifrenizi göreceksiniz ki büyük bir olasılık var.

Ben (tarayıcıda açık olamaz) belge kökü değil bir yere parolayı depolamak ve daha sonra php ile bu dosyayı açın ve içeriği (şifre) okurdu. Birden şifreler / kullanıcı varsa ya, ben hızlı erişim için veritabanında saklamak istiyorum.

Eğer kullanmak istiyorsanız dosya yöntem dizin düzeni böyle bir şey (sunucuda depneds) görünmelidir

/ Public_html / index.php

/ Password.txt

$myFile = $_SERVER['DOCUMENT_ROOT'] + "/../ Password.txt";
if file_exists($myFile) { 
   $fh = fopen($myFile, 'r');
   $password = fgets($fh);
   fclose($fh);
} else die("No password file");
if ($user_input == $password) {
   ...... Authentication succeeded ..........
   ......your relatively protected code .....
} else die("Wrong password");

Eğer bunun yerine metin dosyası metin olarak parola saklamanın bile daha fazla güvenlik istiyorsanız. Boğaz o hash ve kullanıcı girişi ile karşılaştırmak istediğiniz zaman sonra kullanıcı girişi karmasını oluşturmak ve metin dosyasından yüklenen parolanın hash karşılaştırın

sha1($user_input) == $password_from_txt

Sürece PHP kurulum olması gerektiği gibi çalışır gibi, bu başka bir yöntemle daha az güvenlidir. Ben değişken üzerinden adlandırılmış sabiti (define) tercih ederim. Ayrıca yerine düz şifre, şifre karma depolama düşünebilirsiniz. Bu site tehlikeye bile parolaları çalmak engeller.

Kötü bir uygulama olduğu için olduğu gibi, duruma göre değişir. Eğer sadece tek bir şifre saklamak gerekiyorsa, bu yaklaşım ok. Belge kök dışında saklayarak ekstra güvenlik yanlış bir hissi verebilir; belge kök artık mutlak sunucu başka bir ayarı daha.

Sitenin kendisi tehlikeye ve şimdi bu şifreleri erişim izni tüm şeyler (belki, DB?) Sürece.

Bu 'güvenli' tanımlamak nasıl değişir.

Sen bir genel kullanıcı görmez ki haklısın.

Ancak kesinlikle kötü bir uygulamadır; Siteniz tehlikeye ise, bu şifreleri erişim başka ne verecek? Ben bir sade Eğer parola değil, düz metin bir sağlamasını depolamasını gerektiğini söyleyebilirim.

Bazen sadece F.E. zorundadır Sadece bir karma ile düz şifre ile değil, giriş bir posta uygulaması. Uygulama güvenlik sorunları yoksa Ve bu sizi etkilemez.

MySQL, xmaple için, kimlik doğrulaması için karma kabul olmayacak gibi kat düz metin parola en veritabanı parolası olacağını inanıyoruz.

Daha önce belirtildiği gibi en iyi çözüm webroot dışında şifre ile PHP yapılandırma dosyasını tutmaktır.

Dosyayı görüntülerken Birinin şifrenizi görebilirsiniz endişeli iseniz sadece o insan okunamayan base64 funciton kullanarak yapabilirsiniz.

Ayrıntılar ve kolaylaştırır Windows, Linux ve Mac için hatta küçük bir yardımcı program için this post bakın.