Çıktıları sterilize etmek için görünümlerimde ActionView yardımcı strip_tags
yöntemini kullanabileceğimi biliyorum, ancak db'ye devam etmeden önce kullanıcı girdisini dezenfekte etmenin en iyi yolu nedir? Görünüm denetleyicimi denetleyicime dahil etmenin ve strip_tags yöntemini yeniden kullanmanın bir yolunu bulmalı mıyım? Rayların dünya çapında böyle bir şey yapabilecek bir şeyleri olacağını düşünmüştüm.Sanitize giriş XSS ve HTML girişi raylarda
cevap
Ne xss_terminate eklentisi hakkında? http://wonko.com/post/sanitize
Neden Kullanıcının girdileri gerekiyor? tabi Tipik
tümü kullanıcının girdi bunu yazdırmak veya çıktı daha büyük blok içinde ayrıca gömülü olduğu zaman kaçan/titiz, bağlama duyarlı kodlamasıdır.
Veritabanında otururken zararlı kodları bırakmanın bir anlamı yok. Web uygulamalarına birden çok saldırı vektörü zaten ortak bir yer ve bu sadece IMO düzeltmek için kolay bir şey gibi görünüyor. Derinlemesine savunma, biliyor musun? – phreakre
Raylar 3 doğru yaklaşımı alır. Programcının zaten html-safe olduğunu belirttiği özel öğeler hariç olmak üzere, html'ye çıktı olarak herhangi bir şey (kullanıcı tarafından girilen veriler dahil) otomatik olarak html-kaçar. Rails 3 derinlemesine savunma yapar ve doğru yerde ve doğru zamanda verilerden kaçınılarak doğru ve titiz bir şekilde yapar. – yfeldblum
belki mücevher sterilize? Bu hiç mantıklı değil! Sanitizasyonun anlamını her zaman girişleri dezenfekte etmek (kaçmak) istersiniz, çünkü sanitasyonun anlamı içeriğinizi kullandığınız bağlama bağlıdır. Herhangi bir bağlamda güvenli bir dize diye bir şey yoktur. Veritabanınızda, uygulamanızın onları bugün kullandığı senaryoda "güvenli" olan bir dizi karışık dizge istemezsiniz, çünkü yarın, onlarla farklı bir şeyler yapmak isteyebilirsiniz. Sunum katmanınız doğru şeyi yapıyorsa (içeriğe göre içerikten kaçmak), o zaman ne kadar çok tırnak, ters eğik çizgi veya DROP TABLE ifadesi olursa olsun, sorun değil.
Neden kullanıcı girişlerini sterilize istiyoruz:
Bazı durumlarda, veritabanına kaydetmeden önce kullanıcı girdisini "sterilize etmek" mantıklıdır. Bir kullanıcı "
Smith
" olarak onun soyadını girerse Örneğin, o zaman veritabanında html etiketi saklamak için bir anlam ifade etmiyor. Bu durumda, veritabanında soyadını kaydetmeden önce html etiketini şeritlemek güzeldir. –Enjeksiyonla ilgili orijinal soru (XSS ve HTML), bu durumda bu sanitizasyonu yaptığım * her zaman *. Ama bir şekilde ipin içine çöp atmış olsanız bile, sanitasyonun çöpü bulacağına dair şansınız nedir? Bir algoritmanın hangi bölümün olduğunu ve bir isim olmadığını anlamak zordur. Örneğin, ne zaman bir HTML öğesinin ampersan parçası ve ne zaman "Smith & Wesson" gibi bir adın parçası? Çok yakında, bununla son buluyorsunuz: http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ – Enno
- 1. Javascript - Javascript değişkenini ayarlamak için HTML giriş etiketiyle kullanıcı girişi?
- 2. PHP'de XSS filtreleme işlevi
- 3. açısal tercüme sanitize/kaçış
- 4. Arka plan resmiyle html girişi
- 5. Giriş yaptıktan sonra kullanıcı girişi kullanıcı adı? (PHP/JavaScript/HTML)
- 6. html metin girişi onchange olayı
- 7. Rails Görüntüsünde Truncate + Sanitize
- 8. XSS savunmasız web sayfası oluşturulması
- 9. Kullanıcının "Google Giriş Girişi" (OAuth 2.0)
- 10. Raylar, find_by_sql'de nasıl sanitize edileceği
- 11. Codeigniter güvenli sorgular ve xss clean
- 12. Tekrarlı Girdi Girişi 'Standart Girdi' Standart Giriş
- 13. HTML giriş otomatik tamamlama
- 14. html 5 giriş türü
- 15. HTML Giriş Onay kutusu,
- 16. Django kullanıcı girişi sonrası otomatik giriş (1.4)
- 17. Codebehind C# giriş giriş html değeri al #
- 18. jQuery XSS Sorun
- 19. Codeigniter 2.2.6 giriş tipi gizli alanlar xss ve kör sql enjeksiyon nasıl kaldırılır?
- 20. Raylarda
- 21. Önceden doldurulmuş HTML form dosyası girişi
- 22. İyon kontrol kutusunun içindeki HTML girişi
- 23. Dosya yükleme boyutunu sınırlandır (html girişi)
- 24. HTML girişi tatlı uyarıya nasıl eklenir?
- 25. Kullanıcı girişi RSpec ve authlogic
- 26. Girişi
- 27. <%: %> vs Microsoft karşıtı XSS kütüphanesi
- 28. HTML - Tamsayı için giriş aralığı
- 29. var_dump ve php gibi ölmek, Raylarda yakut (raylarda yakutta debug)
- 30. Tarih ve saat girişi
2 yıl sonra ve yorumsuz iki downvot - yorumlar en azından diğer kullanıcılar için daha net olan şeylere yardımcı olur. Not: cevap zamanında Rails 2 kullanıyorduk ve işler şu anki kadar büyük değildi! –