Bir düzenli ifade filtreleme için yeterli olsun ya da olmasın düzenli ifade bağlıdır. SQL tablolarda değeri kullanmak için gidiyoruz eğer, düzenli ifade gerekir bir şekilde Disallow yılında '
ve "
. HTML çıktı değerini kullanmak istediğiniz ve XSS korkuyor iseniz, size regex izin vermez emin olmak gerekir <
, >
ve {[(1) }].
Defalarca söylendiği gibi, hala, sen not, $ tanrı sevgi ile değil normal ifadeler güvenmek istiyorum, lütfen yok! HTML bağlamda basılmış zaman değerleri için SQL ifadeleri için mysql_real_escape_string() or prepared statements kullanın ve htmlspecialchars() strong>.
Içeriğine göre sanitizing işlevini seçin. Genel bir kural olarak, ne olduğunu sizden daha iyi bilir ve ne tehlikeli değildir.
Lütfen düzenlemek için uyum için, düzenleyin:
Database
Hazırlanan tablolar == mysql_real_escape_string() hazırlanan ifadeleri varyant bir performans artışı olan ve yanlışlıkla değerlerden biri işlevini kullanarak unutmak mümkün olan kısa Esasen tam olarak aynı şey, içeri koymak için her değer . Hazırlanan deyimi ne olsa, yerine regex yerine, SQL enjeksiyon karşı sizi güvence oluyor vardır. Sizin regex şey olabilir ve bu hazırlanan ifadesine hiçbir fark olur.
Sen ve 'çapraz-veritabanı' mimarisi accodomate için Regexes kullanmayı deneyin gerekir olamaz. Yine, genellikle sistem ne olduğunu daha iyi bilir ve bunu daha bunun için tehlikeli değildir. Hazırlanmış ifadeler iyi ve bu değişim ile uyumlu olup olmadığını, sonra kolay uyuyabilir. Regexes olmadan.
Değiller ve sen, senin bir veritabanına özel $db->escape() mysql_real_escape_string() için MySQL mimarisi haritalarda hangi ve PostgreSQL mimarlık haritalarda bir etmek gibi bir şey bir soyutlama katmanı kullanmanız gerekiyorsa PostgreSQL için ilgili yöntem (Üzgünüm, PostgreSQL ile çalıştı değil, o el kapalı olacağını bilmiyoruz).
HTML
HTML Arıtma HTML çıktısı (Eğer ayarlama gemileri olduğu beyaz liste modunda kullanmak şartıyla) sterilize etmek için iyi bir yoldur, ancak bir {[arama beri sadece, kesinlikle HTML korumak için gereken şeyler olduğunu kullanmalısınız o şeyi ayrıştırır ve titizlik hedefleyen şekillerde ve kurallar bir dizi güçlü yoluyla manipüle beri (0)]}, oldukça maliyetlidir. Eğer korunacak HTML gerekmez Yani, kullanmak isteyeceksiniz htmlspecialchars(). Ama sonra, yine, bu noktada, düzenli ifadeler sizin kaçan ilgisi olurdu ve her şey olabilir.
Security sidenote
Actually, my mission is to let pass
the input value only if it match my
regexp-white-list; else, return it
back to the user.
Bu senaryo için geçerli olmayabilir, ama sadece gibi genel bilgiler: 'geri kullanıcıya kötü girdi dönen' felsefesi reflected XSS saldırılara sizi açma riskini çalışır. Kullanıcı her zaman saldırgan değildir, bu nedenle kullanıcıya şeyleri dönen zaman, hepsi aynı kaçış emin olun. Sadece bir şey akılda tutmak.