SORU
27 HAZİRAN 2010, Pazar


En iyi giriş dezenfektan PHP işlevleri nelerdir?

Bütün iplerimi ile sanatize için geçebilir o çok yeni, aklımda bir fonksiyonu ile gelip çalışıyorum o/programlama PHP için buradayım. Bunun dışında gelen dize veritabanı ekleme için güvenli olacak. Ama bu kadar çok fonksiyonu var/gerek kullanmalıyım hangisi emin değilim filtreleyerek vardır. Boşlukları doldurmama yardım lütfen:

function filterThis($string) {
    $string = mysql_real_escape_string($string);
    $string = htmlentities($string);
    etc...
    return $string;
}

CEVAP
27 HAZİRAN 2010, Pazar


Dur!

Burada bir hata yapıyorsun. Ah, hayır, PHP fonksiyonları verilerinizi biraz daha güvenli hale getirmek için seçtin. Sorun değil. Senin hatan buişlem sırasıbu fonksiyonları nasıl kullanılır ve.

Önemli sanitasyon ve doğrulama kullanıcı verileri arasındaki fark, depolama için veri kaçan ve sunum için veri kaçan anlamak için.

Dezenfektan ve Kullanıcı Veri Doğrulama

Kullanıcılar veri gönderdiğinde, beklediğiniz bir şey verdiler emin olun.

Temizleme ve Filtreleme

Örneğin, eğer bir sayı, make sure the submitted data is a number bekliyoruz. Ayrıca 9 ** diğer kanser türleri. Her şeyi teslim başlangıçta bir dize gibi muamele görür, tamsayı veya bir şamandıra meydana bilinen sayısal veri temizleme zorlayarak, hızlı ve ağrısız hale getirir.

-Serbest biçimli metin alanları ve textareas? Hiçbir şey bu alanlardaki beklenmedik bir şekilde yüklendiğinden emin olun. Esas olarak, herhangi bir HTML içeriğe sahip olmaması gereken alanlar aslında HTML içermediğinden emin olun. Bu sorunla başa çıkmak için iki yol vardır.

İlk olarak, deneyebilirsinizkaçıyorhtmlspecialchars HTML ile giriş. Ayrıca kodlanmış olması gerektiğini düşünen aksanlı ve diğer karakter kodlama yapacak kadar htmlentities HTML nötralize etmek için kullanmamalısınız.

İkinci olarak, deneyebilirsinizkaldırılıyorherhangi bir HTML mümkün. strip_tags hızlı ve kolay, ama aynı zamanda özensiz. HTML Purifier hem de tüm HTML sıyırma ve de etiketleri seçici bir beyaz liste izin veren, çok daha kapsamlı bir iş yok ve bağlıyor.

Modern PHP sürümleri kullanıcı girişi sterilize etmek için kapsamlı bir yol sağlar the filter extension ile gemi.

Doğrulama

Gönderilen veri beklenmeyen bir içerik olmadığından emin yapma, işin yalnızca yarısıdır. Siz de deneyin ve sunulan verileri aslında çalışabilirsiniz değerleri içerdiğinden emin olun.

Eğer 1 ile 10 arasında bir sayı bekliyorsan bu değeri kontrol etmeniz gerekir. Eğer o yeni, havalı bir HTML5 dönemi sayısal girişler spinner ve bir adım ile kullanıyorsanız, gönderilen veri adım ile uyumlu olduğundan emin olun.

Eğer bu verileri açılır menü olmalı ne geldiyse, gönderilen değer menüsünde görünen bir olduğundan emin olun.

Ne diğer ihtiyaçlarını karşılamak metin girişi hakkında? Örneğin, tarih girişi strtotime DateTime class ile doğrulanmış olmalıdır. Verilen tarih beklediğiniz aralıklar arasında olmalıdır. Ne e-posta adresleri hakkında? Daha önce de belirttiğim filter extension the is_email library hayranı değilim ama adresi iyi biçimlendirilmiş olup olmadığını kontrol edin.

Aynı için de geçerlidirtümdiğer form denetimleri. Radyo düğmeleri var mı? Listeye karşı doğrulamak. Onay kutuları var mı? Listeye karşı doğrulamak. Dosya upload var? Dosya beklendiği bir tür olduğundan emin olun ve filtresiz kullanıcı veri dosya adı gibi davranın.

Her modern tarayıcı kimseye formu işlemek için önemsiz kılan geliştirici araçları içinde tam bir set ile birlikte gelir.Kodunuz kullanıcı tamamen istemci tarafı form içeriği ile ilgili kısıtlamalar kaldırıldı olduğunu varsayalım!

Veri Depolama için kaçıyor

Veri beklenen formatta ve beklenen değerler içerdiğinden emin yaptın şimdi depolama için verileri kalıcı hakkında endişelenmenize gerek.

Her bir veri depolama mekanizması verileri düzgün bir şekilde kaçtı ve kodlanmış olduğundan emin olmak için belirli bir yol vardır. Eğer SQL inşa ediyorsanız, o zaman sorgularda veri aktarmak için kabul yolu prepared statements with placeholders geçer.

PHP en SQL veritabanlarıyla çalışmak için en iyi yollarından biri PDO extension. preparing a statement, binding variables to the statement sending the statement and variables to the server ortak izler. here's a pretty good MySQL-oriented tutorial daha önce PDO ile çalışmadın.

Bazı SQL veritabanı PHP kendi özel uzantıları, SQL Server, PostgreSQL SQLite 3 dahil olmak üzere. Bu uzantıları, her biri aynı hareket ettiklerini ifade desteği-bağlama-hazırlamak yürütmek PDO olarak moda hazırlamıştır. Bazen standart olmayan özellikler ya da davranış desteklemek için PDO yerine bu uzantıları kullanmanız gerekebilir.

MySQL de kendi PHP uzantıları var. Aslında ikisi. Sen sadece hiç bir mysqli olarak kullanmak istiyorum. Eski "" uzantısı deprecated edilmiş ve güvenli ya da aklı başında değil modern çağda kullanın. mysql

Şahsen mysqli hayranı değilim. Değişken hazırlanan ifadeleri bağlayıcı gerçekleştirdiği yol esnek olmayan ve kullanmak için bir ağrı olabilir. Şüphe, PDO kullanın.

Eğer bir SQL veritabanı veri depolamak için kullanıyorsanız, güvenli bir şekilde veri aktarmak için nasıl belirlemek için kullandığınız veritabanı arayüzü için belgelerini kontrol edin.

Mümkün olduğunda, veritabanı uygun bir biçimde veri depolayan emin olun. Sayısal alanlarında numaraları saklayın. Tarih alanında deposu tarihleri. Ondalık alan, kayan noktalı bir alan değil, para deposu. Belgeleri düzgün bir şekilde farklı veri türlerini depolamak için veritabanı tarafından sağlanan inceleme.

Sunum için kaçan bir Veri

Her zaman kullanıcılar için veri göstermek, verileri güvenli bir şekilde kaçmış olduğundan emin istemiyorsan yapmak gerekirbiliyorumkaçak olmamalı.

HTML yayan zaman, neredeyse her zaman, başlangıçta kullanıcı tarafından sağlanan htmlspecialchars veriler geçmesi. Aslında, bunu yapmamalısın sadece zaman zamanbiliyorumkullanıcı HTML ve sağladığınızbiliyorumzaten bir beyaz liste kullanarak. - temizlenmiş o

Bazen bazı Javascript PHP kullanarak oluşturmak gerekir. Javascript HTML olarak aynı kaçan kural yok! Kullanıcı tarafından sağlanan sağlamak için güvenli bir şekilde json_encode PHP ile Javascript değerleri.

Ve Daha Fazlası

Veri doğrulama için daha birçok nüanslar vardır.

Örneğin,karakter kümesi kodlama büyük bir tuzak olabilir. Uygulamanız uygulamaları özetlenen takip etmeli "UTF-8 all the way through". Yanlış bir karakter dize veri davranarak oluşabilecek farazi saldırıları vardır.

Önceki tarayıcı hata ayıklama araçları bahsettim. Bu araçlar da Çerez verileri işlemek için kullanılabilir.Kurabiye güvenilmeyen kullanıcı girişi olarak değerlendirilmelidir.

Veri Doğrulama ve kaçan web uygulama güvenlik sadece bir yönü vardır. Onlara karşı savunma oluşturmak, böylece kendinizi web application attack methodologies dikkat etmelisiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dan Gately

    Dan Gately

    13 AĞUSTOS 2006
  • FattySpins's channel

    FattySpins's

    17 Mayıs 2009
  • majesticdubstep

    majesticdubs

    3 Kasım 2011