Web geliştirme ile ilgili bazı sorular var (PHP ve MySQL)

7 Cevap php

Ben web (PHP ve MySQL kullanarak) programlama, fakat ölçeği çok büyük şey biraz yaptık. Birisi sitenin bir sosyal ağ türü oluşturmak nasıl düşünüyordum ve ben bazı sorunlarla karşılaştı ettik.

  • Nasıl güvenli ve güvenli MySQL şifreleri saklamak istiyorsunuz? Eğer şifreleme Ne tür kullanmak istiyorsunuz?
  • Kullanıcıların resim yüklemek için izin verildi, bu veritabanında depolamak için daha iyi olurdu ya da onlara doğrudan sunucuya yükledik?
  • Ne açık kaynak (WordPress gibi) web uygulamaları okudum ve çalışma (basit tercihen bir şey ama iyi yazılmış) önerirsiniz?

Sınıfta öğretilen ya da kitaplarda yazılı bir şey sadece gerçek üretim kodu iyi tercüme görünmüyor. Onlar sadece çok temel örnekler gibi görünüyor.

Teşekkürler!

7 Cevap

Ilgili şifre saklama: güvenlik için tek yönlü tuzlu karma kullanın. Here's an article on why.

  1. Bir tuzlu karma saklayın. Ben şahsen uzak MD5 taşımak ve yerine topl gibi bir şey kullanarak olur. sha1 + tuz bir süre için dışarı tutun =] olacaktır

  2. Eğer db lekeler olarak görüntüleri depolamak, muhtemelen (db / w birlikte, onları getiriliyor, vb) yedeklenmesi gelecekte daha kolay bir zaman var olacak. Ama gerçekten, onlar da dosya sisteminde lanet hızlı olacak, ama ben db / w arayüzler çok fazla kod var ve ben o bölgede rahat çalışma gibi ben veritabanında onları tercih ediyorum. Bu size kalmış.

  3. Ben wordpress bir sosyal ağ sitesi kurmak için yardımcı olacak emin değilim ... ama başka bir kod okumak için hala iyi. Ben mimarlık sadece zihninizi büyük ölçekli düşünme almak için amazon bazı kitaplara bakmak istiyorum. Ayrıca, bazı tasarım desen kitapları bir göz atın.

Ben de Zend Framework veya CakePHP gibi bir şey içine bakmak istiyorum. Kek muhtemelen sizi havaya ve oldukça hızlı çalışan, ama ben onun çok güçlü olarak, Zend tercih ve belli bir stil kodlamak için zorlamaz. CakePHP tür PHP gibi raylar biridir.

Ayrıca güvenlik, sunucu ve istemci tarafında, vb oturum gaspına, sql enjeksiyon, XSS, kaba kuvvet girişimleri, uzaktan içerir, yüklenen dosya patlatır gibi şeyler için izlerken de iyi almak isteyeceksiniz

Sosyal siteleri kraker birçok saldırı vektörleri sunuyoruz.

Kaynaklar:

For the image storing, I always used to store them on the hard disk, but using a very hard image validation script to make sure the images don't contain malicious code. I'm also used to apply URL rewriting so users can't find the real path to the images.

Veritabanları içine görüntüleri depolamak garip bir duygu yok mu? MySQL veritabanı çok hızlı büyüyebilir, ve her zaman sizin sunucu yavaş yapar demektir görüntüleri göstermek için bir PHP komut dosyası gerekir.


Diğerleri yanıtladı olarak şifre saklama gibi, tuzlama kullanın.


Last, for the documentation, I really love to see how Wordpress is structured. I have spent hours watching it's source code and reading it's documentations. It's just a terribly good example of how to organize any website.

  1. (Örneğin SHA1 veya MD5 gibi) şifre karma bir işlevi uygulayın. Sonra md5 ("sosyal") ya da bir şey ilk 5 karakterler gibi alarak kendisine ekstra "tuz" ekleyin. Bu size kalmış, ancak veritabanına bir hacker erişir, o / o bir gökkuşağı masanın üzerinden karma şifreleri çalıştırın ve gerçek şifre almak mümkün olmayacaktır eğer ki bu amaçlanmaktadır.
  2. Kullanıcıların resim yüklemek için izin veren bir web sitesi çalıştırıyorum. Resimler (ki, bin başı 1.000 görüntüdür) sadece organize tutmak için (ve sorunlarla çalıştırmadan önce sadece klasör başına kadar çok dosya olabilir) kutularına düzenlenmektedir. Resimlerin yer veritabanı yanı sıra (resim id, dosya uzantısı, bin yerde, vb gibi) diğer bilgiler saklanır. Veritabanında bir başka tablo, bir kullanıcı için resim kimlikleri bağlar. Ayrıca, onun Gönderildi kez resmin dosya adı gibi bir şeydir

    {bin}/{userId}_{pictureId}_{token}_{variant}.{fileExt}

  3. Web uygulamaları hakkında emin değilim ama kesinlikle bazı faydalanmak gerekir değil yerleşik gibi PDO veritabanı soyutlama katmanı olarak PHP sınıfları.

Şifre saklama, ben bir tuz ile MD5 kullanmanızı öneririz. MD5 gökkuşağı tabloları kullanarak crack şifresini çözmek mümkün değildir, ancak olası. Örneğin,: Here is a MD5 lookup site I've coded

Ben şahsen sunucu doğrudan onları yüklemek istiyorsunuz, ancak, yalnızca geçerli görüntü dosyaları tarih olabilir emin olmak gerekir. Bir RootShell yükleyerek birini istemiyorum.

Soru 3: Modern Raylar tarzı çerçeveler birini (benim favori Symfony olduğu) yerine Wordpress ya da Galeri gibi bir uygulamayı okuyan öneririm. Her ikisi de mükemmel, ama onlar ben sıfırdan başlayarak eğer ben bir şey başlamak istiyorum yolu basit kesmek evrimleşmiş ve zorunlu değildir ettik.

Ayrıca, soru 2 için, ben veritabanları ikili lekeler nefret ediyorum. Filesystems bunun için büyük iş.

Ve bir soru 1: tek yönlü hash, diğerleri söylediler. MySQL şifresi () fonksiyonu muhtemelen gayet iyi.

Tüm bu sorular daha önce cevaplandırılmıştır.

Nasıl güvenli ve güvenli MySQL şifreleri saklamak istiyorsunuz? Eğer şifreleme Ne tür kullanmak istiyorsunuz?

Bkz http://stackoverflow.com/search?q=password+hash+database+php

Kullanıcıların resim yüklemek için izin verildi, bu veritabanında depolamak için daha iyi olurdu ya da onlara doğrudan sunucuya yükledik?

Bkz http://stackoverflow.com/search?q=store+images+database+php

Ne açık kaynak (WordPress gibi) web uygulamaları okudum ve çalışma (basit tercihen bir şey ama iyi yazılmış) önerirsiniz?

Bkz http://stackoverflow.com/search?q=social+network+php

Ayrıca çalışan ve bir sosyal ağ sitesi yönetmek sadece kodlama çok daha fazla olduğunu dikkate almalıdır. Eğer sıfırdan bir inşa etmek istediğinizden emin misiniz? Eğer Ning gibi bir şey ile eşit derecede mutlu olurdu düşünün, herkes nerede olursa olsun hiçbir programlama ile kendi toplumlarını başlayabilirsiniz?