Ne MYSQL md5 fonksiyonunu kullanabilmek veya md5 php fonksiyonu çalıştırmak için hızlı / daha iyi?

5 Cevap php

Ben DB karşı kullanıcıların şifrenizi kontrol edin.

hızlı ne olduğunu, Mysql MD5 fonksiyonu kontrol

... pwd = MD5('.$pwd.')

OR PHP MD5 fonksiyonu

... pwd = '.md5($pwd).'

ya da iki seçenek arasında Doğru nedir?

teşekkürler

5 Cevap

Birisi sitenizde kaydeder, ya da giriş olduğunda uygulama sadece md5 calcullating ise, md5 birçok aramaları saatte yapacak kendi? Yüzlerce çift? Eğer öyleyse, ben PHP ve MySQL arasındaki really small farkı hiç önemli olacağını sanmıyorum.

Soru daha "beni neredeyse hiçbir şey kazanmak yapar ne" daha "nerede şifre md5 kullanarak saklanan gerçeği koymak" gibi olmalıdır.

Ve, bir dipnot düşmek gibi, başka bir soru olabilir: Eğer hesaplamaları için bu tür kaynakların nereye harcanacağı gelemez? 10 PHP sunucuları ve zaten ağır yük altında bir DB sunucu varsa, ;-) cevap almak

Ama, sadece eğlence için:

mysql> select benchmark(1000000, md5('test'));
+---------------------------------+
| benchmark(1000000, md5('test')) |
+---------------------------------+
|                               0 |
+---------------------------------+
1 row in set (2.24 sec)

Ve PHP:

$before = microtime(true);
for ($i=0 ; $i<1000000 ; $i++) {
    $a = md5('test');
}
$after = microtime(true);
echo ($after-$before) . "\n";

verir:

$ php ~/developpement/tests/temp/temp.php
3.3341760635376

Ama muhtemelen, böyle bir milyon md5 olacak hesaplama olmayacak?

(And this has nothing to do with preventing SQL injections : just escape/quote your data ! always ! or use prepared statements)

Ben daha hızlı olduğunu bilmiyorum, ama eğer PHP bunu eğer SQL enjeksiyon olasılığını önlemek.

Performans gerçekten burada bir sorun var mı? Bu marjinal olması olasıdır.

  • MySQL yapıyor DB iyi bir şey olduğunu daha fazla iş yapmak yapar
  • MySQL yapıyor cleartext şifre daha fazla birlikte geçti alır demektir (ve DB bağlantısı sık sık şifresiz).
  • Bu, SQL enjeksiyonu ile ilgisi yoktur. Sen MD5 fonksiyonunu hareket ettirmeden ilk sürümü düzeltmek. Bir hata PHP'nin MD5 fonksiyonu varsa da enjeksiyon saldırısı olasılığı hala var.

Bunu ölçmek, belli olması için tek yol bu.

Ben daha sonra istemci kodu hesaplanan karma (örneğin php) ile karşılaştırmak, mysql dışarı sütun değeri okumak, söyleyebilirim.

Bunu yapmak için temel nedeni böyle bir karma için genellikle istenmeyen olmayan bir ikili düzende sütunu (örneğin harf duyarsız vb), harmanlama veritabanı olarak aptalca şeyler kaçınır olmasıdır.