Kamu girişini temizlemek için en iyi yolu nedir?

2 Cevap php

Yani bir sonraki seferde sayfada temsil edilebilir bir kullanıcıdan bazı girişini kabul eden bir form var.

Bir bakış güvenlik açısından bu yapmayı düşünüyorum yolu, giriş almak tüm girişine mysql_real_escape_string () işlevi uygulamak, daha sonra hazırlanmış deyimi kullanarak yerleştirmektir.

Veri alırken, ben ekranda sunmadan önce üzerinde bir htmlspecialchars () yapacağız.

Bu ok olacak? Ben önemli bir şey bakan muyum?

2 Cevap

İki şey:

  • you must escape all input before sending it to the database ; for that :
    • Eğer hazırlanmış deyimleri kullanarak değilse mysql_real_escape_string, doğru aracı
    • Eğer hazırlanmış deyimleri kullanıyorsanız, kendiniz kaçmaya gerek yok: bu otomatik olarak yapılabilir olacak.
    • Eğer olsa, hem yapmanız gerekir: Kendinizi kaçan ve çok kaçış hazırlanmış deyimleri, kullanıyorsanız, onun yorumunda açıklık @ Longneck gibi, dize iki kez kaçtı olacak - ve bunu istemiyorum.
  • Sonra, tüm çıktıyı kaçmak gerekir; çıkış biçimi HTML, htmlspecialchars'ın veya htmlentities OK eğer.

Peki, ne yapıyorsun HTML çıktıya için bana iyi görünüyor; ama DB çıkış için gerekli olandan daha fazla yapıyor.


As a sidenote : if you want to allow your users to use HTML, you can use a tool like HTMLPurifier -- it allows you to specify which tags/attributes are allowed or not.

Eğer işaret yöntemler doğru ve bu nedenle de kullanılmalıdır. Ve evet, senin eksik XSS Filtreleme. XSS saldırısı örnekler için bu siteyi kontrol:

http://ha.ckers.org/xss.html

Yani, daha iyi bir regex dize gibi, kesmek için bu tip bir önleme sistemi almak istiyorum. İşte bazı öğreticiler bulunuyor:

http://www.chipmunkninja.com/Helping-Prevent-XSS-Attacks-in-2@ http://shiflett.org/blog/2007/mar/allowing-html-and-preventing-xss