Wiem, że mogę używać metody ActionView helper strip_tags
w moich widokach, aby odseparować wynik, ale jaki jest najlepszy sposób na odkażenie danych wprowadzanych przez użytkownika przed utrzymaniem go w mojej bazie danych? Czy powinienem znaleźć sposób włączenia pomocnika widoku w moim kontrolerze i ponownego użycia metody strip_tags? Myślałem, że szyny mają coś dostępnego na całym świecie, żeby zrobić coś takiego.Sanitize input Wejście XSS i HTML w szynach
Odpowiedz
Co z wtyczką xss_terminate?
Dlaczego należy odkażać dane wejściowe użytkownika?
Zazwyczaj wszystko, czego potrzeba, to rygorystyczne, kontekstowe kodowanie/ucieczka danych wprowadzanych przez użytkownika podczas jego drukowania lub osadzania w większym bloku danych wyjściowych.
Nie ma sensu pozostawiać złośliwego kodu po prostu siedząc w bazie danych. Wiele wektorów ataków na aplikacje internetowe jest już powszechnym miejscem, a to wydaje się łatwe do naprawienia, IMO. Obrona w głębi, wiesz? – phreakre
Rails 3 ma prawidłowe podejście. To automatycznie html-ucieka od wszystkiego (w tym danych wprowadzanych przez użytkownika) wyprowadzanych do HTML, z wyjątkiem tych konkretnych elementów, które programista wskazuje, że są już bezpieczne dla html. Railsy 3 zajmują się obroną i robią to we właściwy i rygorystyczny sposób, a dane są usuwane we właściwym miejscu i we właściwym czasie. – yfeldblum
może zdezynfekować GEM: http://wonko.com/post/sanitize
Dlaczego chcesz zdezynfekować wejściowych użytkownika? To nawet nie ma sensu! Zawsze chcesz odkażać (uciekać) wyniki, a nie nakłady, ponieważ znaczenie sanityzacji zależy od kontekstu, w którym używasz treści. Nie ma czegoś takiego jak ciąg, który jest bezpieczny w każdym kontekście. Nie chcesz, aby w Twojej bazie danych było mnóstwo zmanipulowanych łańcuchów, które są "bezpieczne" w jakimkolwiek scenariuszu, którego aplikacja używa dzisiaj, ponieważ jutro możesz chcieć zrobić z nimi coś innego. Jeśli twoja warstwa prezentacji robi właściwą rzecz (ucieczka zawartości w oparciu o kontekst), wszystko jest w porządku, bez względu na to, ile cytatów, odwrotnych ukośników lub instrukcji DROP TABLE jest w nich.
W niektórych przypadkach sensowne jest "odkażenie" danych wprowadzanych przez użytkownika przed zapisaniem go w bazie danych. Na przykład, jeśli użytkownik wpisze swoje nazwisko jako "
Smith
", to nie ma sensu przechowywać tagu HTML w bazie danych. W takim przypadku dobrze jest usunąć znacznik html przed zapisaniem nazwiska w bazie danych. –Pierwotne pytanie związane z zastrzykiem (XSS i HTML), w którym to przypadku utrzymuję, że dezynfekcja jest * zawsze * martwa. Ale nawet jeśli w jakiś sposób dostaniecie śmieci w sznurku, jakie są wasze szanse na to, aby sanityzacja znalazła śmieci? Algorytmowi trudno jest określić, która część jest i nie jest nazwą. Na przykład, kiedy jest to ampersand część encji HTML i kiedy jest częścią nazwy takiej jak "Smith & Wesson"? Niedługo skończy się to: http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/ – Enno
- 1. Angular2 Sanitize Form Input dla ataków XSS
- 2. Parametry sanitize $ _GET, aby uniknąć XSS i innych ataków
- 3. Backbone.js i XSS/HTML escaping
- 4. Sanitize HTML i zamykanie niekompletnych tagów
- 5. Dlaczego ng-bind-html i $ sanitize dają różne wyniki?
- 6. HTML input onfocus i onblur?
- 7. laravel 4 - Sanitize Input :: get() (e() vs HTML :: podmioty w laravel 4)
- 8. html() vs innerHTML jquery/javascript i ataki XSS
- 9. Biała lista HTML .NET HTML (skrypty anty-xss/Cross Site)
- 10. XSS w kątowym Przekłada dyrektywę
- 11. Unikaj XSS z wejściem BBCode i wyjściem HTML
- 12. Escape/sanitize danych wprowadzanych przez użytkownika w Clojure/Compojure
- 13. Wejście vs: Wejście w jQuery
- 14. zwyczaj html wejście na pole ostrości numerze
- 15. HTML Input - już wypełniony tekst
- 16. Wejście odczytu konsoli Groovy
- 17. angular translate sanitize/escape
- 18. Czy createTextNode jest całkowicie bezpieczny przed iniekcją HTML i XSS?
- 19. Ścieżka do pliku sanitize w PHP
- 20. Jak działa wejście pliku HTML?
- 21. Jak odkażać kod HTML w Javie, aby zapobiec atakom XSS?
- 22. Czy kodowanie HTML zapobiega wykorzystaniu zabezpieczeń XSS?
- 23. HTML jak wyczyścić wejście za pomocą javascript?
- 24. Przycinanie + sanityzacja widoków w szynach
- 25. Wejście liniowe VBA vs Wejście
- 26. Wyrażenie regularne Sanitize (PHP)
- 27. Nie uciekaj html w rubinach na szynach
- 28. Anti XSS i Classic ASP
- 29. JSF SelectItems i escaping (xss)
- 30. Jak zapobiec XSS w poniższym kodzie?
Dwa lata później i dwie notatki na dole bez komentarzy - komentarze pomogłyby przynajmniej w lepszym zrozumieniu dla innych użytkowników. Uwaga: w momencie odpowiedzi używaliśmy Rails 2 i rzeczy nie były tak wspaniałe, jak teraz! –