Luka w zabezpieczeniach XSS z PCI RapidComply

0

Mam witrynę internetową hostowaną na serwerze Apache Tomcat 7, który korzysta z bramy Authorize.net i usług handlowych do obsługi płatności. Niedawno przeprowadziłem wymagany test zgodności PCI z moją witryną i nie powiódł się z powodu luki w zabezpieczeniach Odbicie skryptu krzyżowego (XSS). Podali przykład zastąpienia wartości jednego z moich parametrów formularza skryptem: alert („test”)

Wydaje mi się, że rozwiązałem już ten problem po stronie klienta, sprawdzając poprawność danych wejściowych po przesłaniu formularza i nie kontynuując, jeśli jedno z danych wejściowych jest nieprawidłowe. Jednak ponowne skanowanie ostatnio nie powiodło się, więc myślę, że muszę zrobić więcej.

Moje pierwsze pytanie: czy można przekazać parametry POST do serwera za pośrednictwem adresu URL? Myślałem, że jest to możliwe tylko z metodą GET, której nie używam. Próbuję ustalić, w jaki sposób przesyłają te dane. Ich wsparcie oczywiście nie istnieje, więc sam muszę to rozwiązać.

Czy ktoś miał jakieś doświadczenie z PCI RapidComply? Czego użyłeś, aby rozwiązać problemy z walidacją XSS?

Dzięki!

Bob.
źródło

Odpowiedzi:

1

Nie można przekazać parametrów POST za pośrednictwem adresu URL, ale nie jest to wymagane w przypadku usterki XSS. Witryna strony trzeciej może wysłać użytkownika do Twojej witryny z dowolnym parametrem POST, jaki chce, za pomocą JavaScript:

<html>
  <body onload="document.forms[0].submit()">
    <form action="https://yoursite.example.com/" method="post">
      <input type="hidden" name="parameter" value="alert('test')">
    </form>
  </body>
</html>

Tak długo, jak atakujący może spowodować, że użytkownik końcowy mający dostęp do Twojej witryny załaduje taki dokument HTML (np. Poprzez iframe umieszczony w sieci reklamowej), może spowodować, że użytkownik uruchomi dowolny skrypt JavaScript na twojej stronie w kontekście (sesja ) tego użytkownika.

Jedynym sposobem, aby temu zapobiec, jest obsługa go po stronie serwera. Ogólnie rzecz biorąc, wszelkie przesłane dane użytkownika powinny zostać zdezynfekowane, a także pamiętaj, aby uciec od wszystkiego podczas wyświetlania HTML. Zwykle ostatnią częścią powinna zajmować się biblioteka szablonów.

olav
źródło
Tak, to jest poprawne. Uświadomiłem sobie po tym, że możesz po prostu napisać skrypt po stronie klienta, aby przesłać formularz. Czy możesz polecić bibliotekę szablonów do ucieczki z wyjściowego HTML? I czy zazwyczaj jest to wykonywane po stronie serwera?
Bob.
Ucieczka musi zawsze odbywać się po stronie serwera - do czasu otrzymania danych przez klienta jest już za późno. Jeśli chodzi o silniki szablonów, tak naprawdę nie mam żadnych rekomendacji dla Javy. Google ma wiele sugestii. Muszę powiedzieć, że Pebble wygląda obiecująco wrt. automatyczne wykrywanie .
olav