2009-09-15 16 views
5

Chcielibyśmy uniemożliwić użytkownikom wprowadzanie html lub javascript w polu tekstowym.Sprawdź skrypt w polu tekstowym asp.net

Możemy po prostu przeanalizować dane wejściowe i sprawdzić nawiasy aniołów. Zastanawiasz się, czy istnieje lepszy sposób na zrobienie tego?

+0

Dobre pytanie - pokazuje, że myślisz o bezpieczeństwie. +1. – David

Odpowiedz

5

Zauważyłem, że zastąpienie nawiasów anioła zakodowanymi nawiasami aniołów rozwiązuje większość problemów. Oto reference dla wszystkich sposobów, w jakie ludzie mogą wykonywać skrypty cross-site. Stworzenie regexu, aby zatrzymać jakikolwiek smak HTML i/lub Script jest prawie niemożliwe.

+1

+1 Nie "sprawdzaj" niczego, zamiast tego uciekaj prawidłowo w drodze na zewnątrz. Użytkownicy powinni mieć możliwość wpisania nawiasów ostrych i powinny wyglądać jak zwykłe nawiasy ostrokątne na stronie: < >. Prawidłowa metoda nazywa się HtmlEncode (jeśli elementy sterujące .NET nie są automatycznie wymieniane w szablonie), wpływa to również na znaki ampersands i quotes (dla tekstu w wartościach atrybutów). – bobince

2

Czy można użyć weryfikatora wyrażeń regularnych do weryfikacji danych wejściowych?

3

Jeśli ustawisz Page.ValidateRequest = true, zatrzyma to.

Od wersji .net 1.1 (jak sądzę) domyślnie jest to ustawione na true.

+1

ValidateRequest jest całkowicie, całkowicie nieprawdziwe i zdradza niebezpieczne nieporozumienie problemu. Jest to podobne do wyśmiewanego przez PHP "magic_quotes_gpc", ponieważ próbuje naprawić problem wyjściowy (ucieczkę) w warstwie wejściowej. Podobnie jak magiczne cytaty, łamie to twoją aplikację (np. Gdyby była tu w SO, nie moglibyśmy w ogóle mówić o kodzie HTML '), podczas gdy w rzeczywistości nie gwarantowaliśmy jej bezpieczeństwa (dane wyjściowe nie pochodzą bezpośrednio z danych wejściowych i filtrów można oszukać). – bobince

+0

Nie odmawiam niczego, co mówisz, aw prawie wszystkich naszych aplikacjach jest on wyłączany globalnie, a każde wejście/wyjście jest sprawdzane ręcznie. Jednak to pytanie mówi: "Chcielibyśmy uniemożliwić użytkownikom wprowadzanie html lub javascript w polu tekstowym." ValidateRequest to robi. –

+0

Rzeczywiście. To właściwa odpowiedź ... może to nie jest właściwe pytanie! – bobince

1

Page.ValidateRequest zatrzyma to, chyba że je wyłączyłeś.

Jednak wytyczne OWASP (a także prawie wszystkie właściwe wytyczne dotyczące bezpieczeństwa) mówią, że NIE należy próbować ograniczać błędnych znaków podczas sprawdzania poprawności, ale zamiast tego należy filtrować tak, aby używane były tylko dozwolone znaki.

http://en.wikipedia.org/wiki/Secure_input_and_output_handling

http://www.owasp.org/index.php/Top_10_2007-A1

Dla dobrych bezpiecznych praktyk kodowania chciałbym zacząć tutaj i zakładki witryny w przyszłości. http://www.owasp.org/index.php/Top_10_2007

0

Natknąłem się na to narzędzie HTML. Kod wykorzystuje białą listę znaczników, które można wprowadzić. Skrypt następnie formatuje tekst wejściowy i usuwa znaczniki i skrypty, które mogą być użyte do ataków z użyciem skryptów krzyżowych.

Dla twoich celów nie możesz mieć żadnych znaczników na białej liście.

Html utilty

Powiązane problemy