/ / Używanie sprawdzania poprawności zapytań ajaxowych? - c #, asp.net, xss

Używanie sprawdzania poprawności zapytań ajaxowych? - c #, asp.net, xss

Użytkownicy mojej witryny mają stronę, na której mogą napisać swój własny html. Chcę, żeby to było używane do takich rzeczy, jak uporządkowane listy, stylizacja itd., Ale niektórzy ludzie spróbują wstawić skrypt, na który nie mogę pozwolić.

Mechanizm aktualizowania opisu użytkownika odbywa się przez ajax. Z javascript wysyłam żądanie do pliku ajax.ashx, który wywołuje funkcję w ajaxMethods.cs. W funkcji I aktualizuję serwer sql z nowym opisem użytkownika.

Jak mogę sprawdzić dane wejściowe w funkcji, zanim opis zostanie przesłany na serwer? Chcę coś zrobić ze skryptami, ale pozostaw normalne znaczniki html takie jak <p>. Czy są jakieś narzędzia, które poradzą sobie z tym wszystkim?

Odpowiedzi:

1 dla odpowiedzi № 1

Dlaczego nie pozwolić użytkownikom na używanie niestandardowego formatu / języka zamiast (na przykład Obniżka cen), a następnie parsować ten serwer po stronie HTML? W ten sposób wiesz, że kod skryptu / html znaleziony w rzeczywistym żądaniu jest nieprawidłowy i może zostać usunięty (lub zakodowany). Daje to również tę zaletę, że pozwala tylko na ustaloną listę znaczników. Zasadniczo daje to tę samą funkcjonalność, co StackOverflow.


0 dla odpowiedzi nr 2

polecam cię HttpServerUtility.HtmlEncode twoje wyjście. Próba sparsowania tagów skryptu, a nie HTML, nie jest dobrym podejściem. Zobacz referencję poniżej:

XSS (Cross Site Scripting) Cheat Sheet