PHP / MySQL güvenlik - nereden başlamalı?

5 Cevap php

Ben online güvenlik konusunda hiçbir şey bilmeyen bir PHP / MySQL çaylak değilim.

Benim bilgi yardımcı olacak bazı kaynaklara işaret? (Başlangıç ​​seviyesi, lütfen!)

5 Cevap

Ben iki şey önereceğiz:

  1. Emin Register_globals kapalı olduğundan emin olun.
  2. Kullan prepared statements.

This question is well-answered and covers MySQL injection attacks (one of the more common concerns. This question is also well documented and covers XSS (cross site scripting) attacks well.

Son olarak, PHP.INI hakkında bilgi edinmek ve bunu kurmak için nasıl ve aslında kapalı / açık ne olduğu ve on / off. İyi bir ev sahibi, örneğin, kayıt globalleri açmak asla, ama en azından ne olduğunu ve neden bunu kontrol etmek için ne bilmeli. PHP Security Bu ve diğer pek çok PHP güvenlik kaygıları kaynaklara sahiptir.

PHP iyi başlangıç ​​olmayabilir. Eğer konum, özellikle büyük ölçüde el-haddeleme kendi kodunuzu. Bu tam olarak güvenlik sorunları ile elini tutmaz. (Fd: PHP çeşitli nedenlerle için uzağa gitmek isterdim.)

Ama bazı genel kurallar:

  • Dışarıdan gelen bir şey güvenmiyorum. Her kullanıcı app kırmaya çalışırken bazı pislik olduğunu varsayalım. Çoğu tabii, olmayacak, ama sonunda biri olacak. Eğer tarayıcı verdi diye bir <select> a, b ve c içeren bu arka birini alırsınız anlamına gelmez. Javascript şey bir garantisi değildir. Referers kolayca taklit edilebilir. POST verileri kolayca sahte olabilir. Textboxes herhangi bir karakter değil, beklediğiniz sadece olanları içerebilir.
  • Kopyala-yapıştır yapmayın başkalarının kodunu üretimin içine nasıl çalıştığını emin değilseniz. Sen yazar güvenliği için ne kadar bir gözün hiçbir fikrim yok. Benim durumumda, özellikle PHP copypasta az güvenilir gibi görünüyor ama daha sık körü körüne yeniden.
  • Farklı yerlerde onlarca aynı ritüeli gerçekleştirmek için kendinize güvenmiyorsanız. Evet, mysql_real_escape_string() SQL enjeksiyon düzeltmek, ama sonra her yerde kullanmak için hatırlamak zorunda olacak. Bu bir hata yapmak ve kaçan ritüeli unutmak olabilir yerlerde bir sürü oluşturur. Hazırlanan yerine deyimleri ve sorunu kullanın vanishes entirely. Başka bir örnek: Eğer aksi açıkça sormak sürece herhangi bir değişken HTML-kaçtı böylece Pylons (Python framework) şablonlarını kuleleri. XSS artık bir sorun olduğunu, ve ben yazdırmak şeyi kaçan hakkında elle endişelenmenize gerek asla.

Chris Shiflett PHP programlama ve güvenlik üzerinde go-adam:

Eğer biraz zaman varsa, onun conference at the Dutch PHP Conference, birkaç ay önce, "yeni başlayanlar için PHP Güvenlik Crash Course" hangi başlık sırasında Stefan Esser tarafından kullanılan slaytlar bakmak olabilir.

PDF bir çift vardır:

Bunlar yardımcı olabilir.

(XSS, SQL Enjeksiyon, CSRF, ... gibi) bazı güvenlik sorunları PHP özgü değildir: Sonra, non-PHP-özgü bilgiler için biraz aramak çekinmeyin onlara özgü önlemek için sadece teknik araçlar; Eğer öyleyse, Wikipedia gibi sitelerde bilgiler bol bulabiliriz, ya OWASP website