Ben görüşlerini yazdırmak için XML ve XSLT kullanan PHP ile bir MVC uygulama geliştiriyorum. Bu tamamen UTF-8 desteklenen olması gerekir. Ben de doğru UTF8'den ile yapılandırılmış MySQL kullanır. Benim sorunum yanındadır.
I-àáèéìíòóùú"><'@#~!¡¿? gibi bir değere sahip bir <input type="text"/>
vardır. Bu veritabanına eklemek için işlenir. Ben bir INSERT
kullanmak mysql_real_escape_string($_POST["name"])
ve sonra MySQL yapın. Bu " ve ' önce bir çizgi \ katacak.
MySQL veritabanı, bir DEFAULT CHARACTER SET utf8
ve COLLOCATE utf8_spanish_ci
var. Tablo alanı normal VARCHAR
olduğunu.
Sonra XSLT ile dönüştürülmüş olacak bir XML üzerinde bu baskı var. Ben bu yüzden <?php echo TexUtils::obtainSqlText($value_obtained_from_sql); ?>
ile yankı XML üzerinde PHP kullanabilirsiniz. obtainSqlText() function aslında işlenmiş $ değeri, son bir yapı için bekliyor gibi aynı döndürür.
Ben Seçilen giriş için gereken ilk şeylerden biri > dönüştürmek ve < >
ve <
olduğu için bu irade başlangıç / bitiş etiketleri ile ilgili sorunlar oluşturabilir. Bu <?php htmlspecialchars($string, ENT_QUOTES, "UTF-8"); ?>
ile yapılacaktır. Bu, aynı zamanda " "
ve ' [(10)] {için, & &
dönüştürür doyurmaya }. Bu büyük bir sorundur: XSLT tüm HTML özel karakterleri tanımaz, çünkü başarısız başlar.
Başka bir sorun var. I àáèéìíòóùú"><'@#~!¡¿? girdi konuştuk ama değer gibi görünecek bir CKEditor <textarea />
bazı metin olacak:
<p>
<a href="http://stackoverflow.com/">àáèéìíòóùú"><'@#~!¡¿?</a>
</p>
Ben bu yönetmek için var nasıl? İlk başta, ben bu ikinci değerini yazdırmak istiyorsanız doğru ben kullanmak gerekir <xsl:value-of select="value" disable-output-escaping="yes" />
. "><' Doğru basacaktır?
Peki ben gerçekten arıyorum ben bu değerleri yönetmek gerekir nasıl ve ne yazdırmak ettik nasıl. Bir TEXT
ise (örneğin) bir VARCHAR
verir vermez HTML ve başka bir gelen ve HTML verir eğer ben bir şey kullanmak gerekiyor? I disable-output-escaping="yes" her şey kullanmak gerekir?
Ben de gerçekten XSS saldırıları sorgu güvence ben bu yaptığını bilmek istiyorum.
Şimdiden teşekkürler!