Neden PHP magic_quotes_gpc üzerinde dönüyor kötü bir uygulama olarak kabul edilir?
Ben onu (o sayfada takip yorum ile) PHP kendisi yapımcıları daha iyi açıklayabilir sanmıyorum: Why not to use Magic Quotes
get_magic_quotes_gpc() buna göre bu kontrol ve kod için kullanın.stripslashes() aşırı kullanımını gerektirebilir.Not - Bu özellik PHP 5.3.0 ÖNERİLMEMEKTEDİR ve PHP 5.4.0 itibariyle ÇIKARILDI olmuştur.
Makaleye göre What is Magic Quotes GPC (magic_quotes_gpc) in PHP and the php.ini?, bir çok dezavantajları vardır:
Eğer daha güvenli kod yazmak için güçlerini onu terk çünkü.
Sayın O'Malley sitenize kayıt giderse, o zaman magic_quotes_gpc O \ 'Malley'in içine onun soyadını dönecek, ve veritabanına eklediğinizde, her şey yolunda gidecek.
Mutlaka veritabanı sistemi için kaçması gibi çalışmıyor - Sorun magic_quotes addslashes gelen, olduğunu. O'Malley işe yarayabilir, ancak o da bu kaçışa aşmak ve SQL enjeksiyon yapmak mümkün olabilir.
Magic_quotes değilseniz, o zaman dize O'Malley alırsınız, ve bu gibi bir SQL deyimi kıracak
INSERT INTO users (...) VALUES (...,'O'Malley',...)
Uyarı dize gerçekten O. sonra sonlandırılır
Ayrıca, güzel: Eğer, örneğin, onun adı ile bir e-posta göndermek için olsaydı, stripslashes olurdu - sebepsiz. Eğer yoksa Bay O \ 'Malley'in bir e-posta alırsınız.
SQL enjeksiyonu önlemek için en iyi yoldur çünkü (Elbette, gerçekten güvenli veritabanı işleme kodu için, sen, parametreli sorgular kullanmak isterdim. Ve parametreleyebilir eğer, yine eğik istemiyorum ve bu bir israf PHP eklemek için zamanı.)
Birileri bu seçenek anında uygulama güvenlik açıkları yüzlerce açılış, etkin olmayan bir sunucuya komut taşıyabilirsiniz çünkü. Ayrıca, çok sayıda sihirli tırnak sağlayan uygulama güvenli kıldığını düşünüyorum. Öyle değil. Hala uygulama içine gelen girdinin her parçasını incelemek ve doğrulamak gerekir. Eğer alıntı sorunları yoksa bile, hala vb cross site scripting sorunları olabilir
Özelliği rağmen gelecekteki PHP sürümlerinde kaldırılır ediliyor olması.
"Sihirli Tırnaklar" onlar daha iyi bilmiyordum, SQL enjeksiyonu ile ayaklarına ateş geliştiricileri önlemede el holdingde PHP'nin girişimi oldu. PHP 5.3 önerilmemektedir ve PHP 6 kaldırılacaktır.
Ben açık olması ve oldukça kaçış everything daha kaçtı gerekenleri kaçış ve veritabanında yer asla şeyler Unescape zorunda iyi olduğunu söylüyor. Sihirli tırnak daha iyi bilmeli halkı korumak amacıyla, çözer daha birçok (veya daha fazla) sorun yaratır.