Wątek przeniesiony 2023-09-10 10:25 z JavaScript przez dzek69.

Zablokowanie wykonywania kodu JavaScrypt

0

Witam!
Proszę Was o pomoc.
Posiadam stronę z darmowymi ogłoszeniami motoryzacyjnymi https://tuauta.pl/ogloszenia/opel,5190. Na jednej podstronie (blogu) muszę zablokować wykonywanie JavaScrypt. Jak mogę to zrobić?
Wersja PHP 8.0.27
Pozdrawiam!
Tomasz

3

Wyślij nagłówek CSP

Content-Security-Policy: script-src 'none'

Teraz żaden skrypt się nie odpali i zakończy działanie błędem w konsoli.
Ewentualnie możesz ustalić wartość nonce lub zezwolić konkretnym skryptom działanie prez podanie ich źródła lub hashu zawartości.
Jest wiele opcji - poczytaj tu https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src

2

A czemu chcesz to zrobić?

2

Brzmi jakbyś chciał przyjmować treści postów od użytkowników i wyświetlać je na stronie.

W takiej sytuacji (jak i innych, podobnych) powinieneś przede wszystkim nie dopuścić do istnienia skryptów na stronie (i w bazie postów). Jakiś "HTML sanitization php" w Google może pomóc, ja już PHP nie robię, więc nie skieruję dokładniej. Idealnie posty nie powinny być w ogóle przyjmowane w postaci HTML a np. w Markdown, następnie konwertowane do HTML. Tutaj nie zaszkodzi dodatkowo użyć sanityzacji na wyniku.

To, co zaproponował @obscurity jest super, ale to tylko druga ściana (najlepiej połącz to z raportowaniem: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/report-uri (czytaj uważnie te komunikaty na czerwono, żebyś zrobił rozwiązanie które działa teraz i będzie nadal działać w przyszłości)).

A teraz dlaczego zalecam dwa rozwiązania na raz, skoro każde "zadziała":

  1. libka, której użyjesz do markdown / sanityzacji na pewno miała już buga, że przepuszczała jakieś lewe kody. I na pewno będzie miała. W tej sytuacji ochroni cię CSP, a wspomniane raportowanie pomoże wychwycić moment, w którym coś się przemknęło.
  2. CSP to tylko nagłówek. Może nie być respektowany przez przeglądarki z jakiegoś durnego powodu (tryb developerski, dodatki typu uMatrix, choć widziałem, że nawet zwykłe ad blockery posługiwały się modyfikacją tego nagłówka), możesz przypadkiem zmienić coś w kodzie, co spowoduje, że nagłówek przestanie być zwracany, możesz dołożyć jakieś (reverse) proxy po drodze kiedy przyjdzie do skalowania serwisu, które zgubi ten nagłówek - i nawet tego nie zauważysz.
0

Dziękuje bardzo za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1