Markdown & kullanarak eylemler doğru dizisi

1 Cevap php

Ben (gelecekte düzenlemek için seçeneği ile) MySQL veritabanında saklanır var, benim kullanıcıları Markdown bir makale yazmak mümkün olmak istiyorum, ve diğer kullanıcılar için görüntülenir.

Uygulamada, bu nasıl çalışır, benim anlayışım budur:

GİRİŞ

  1. Markdown sözdizimi kullanarak HTML formu ile kullanıcı girişi
  2. $queryInput = mysql_real_escape_string($userInput);
  3. veritabanına dezenfekte dize eklemek

ÇIKIŞ

  1. veritabanı sorgu alan
  2. $output = Markdown($queryResult);
  3. ekran $output

O kadar?

PHP Markdown htmlspecialchars veya Pure HTML için ihtiyacı ortadan kaldıracak mı?

Teşekkürler!

1 Cevap

Ben birkaç hafta önce PHP markdown kullanımını değerlendirildi (ve bu arada, onu kullanmaya karar verdi). Düşüncelerim:

  • Bu markdown çözümleyici çıkış işlenir her zaman çalıştırmak için iyi bir fikir olmayabilir - Yorum ayrıştırma oldukça pahalı ve (örnek olarak) olağan blog yorum çok daha sık yazılı den okunur. Sen veritabanına kullanıcı girişi tasarrufu ÖNCE markdown çözümleyici çalışmalıdır!

  • Şimdi gerçekten zor sorun: Markdown kendisi tarafından herhangi bir güvenlik kontrolleri yapmaz. Tüm XSS saldırıları mutlu geçirilir. Şimdi düşünüyorsanız, tekrar düşünün "sorun yok, ben sadece doğru kullanıcı girişi aldıktan sonra strip_tags edeceğiz": Bu markdown kullanıcı girişi işlenirken XSS içeren etiketleri oluşturur oldukça mümkündür. Çok hata eğilimli olduğu çok zor bir görev - Peki, güvenlik sorunları için markdown tarafından oluşturulan HTML kodunu kontrol etmek zorunda. (Yani benim durumumda kullanarak değil neden oldu - fayda potansiyel maliyetler için iyi bir oran vardı)