Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][javascript] xss a htmlspecialchars
bmL
post 14.10.2009, 23:23:38
Post #1





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Witam, ostatnimi czasu znajomy powiedział mi że htmlspecialchars nie jest wystarczającym zabezpieczeniem przeciw atakom XSS. Niestety on sam nie może znaleźć źródła tekstu który o tym traktował a swoją opinię aktualnie opiera jedynie na tym że popularne frameworki korzystają z własnych systemów filtrowania, zamiast robić używając htmlspecialchars.
Tak więc moje pytanie brzmi czy istnieje możliwość wykonania ataku XSS niech to będzie dla przykładu alert('test') nie koniecznie atak ale kod js.

  1. <form method="post" action="index.php">
  2. <input type="text" name="txt" />
  3. <input type="submit" value="sprawdz" />
  4. </form>
  5.  
  6. <?php
  7. if(isset($_POST['txt'])
  8. echo htmlspecialchars($_POST['txt']);
  9. ?>


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
rezik
post 15.10.2009, 17:26:57
Post #2





Grupa: Zarejestrowani
Postów: 11
Pomógł: 2
Dołączył: 25.09.2009

Ostrzeżenie: (0%)
-----


to Twój znajomy taką informację chyba z kieszeni wyciągnął
Kod
http://php.net/manual/en/function.htmlspecialchars.php

funkcja filtruje np. < i > przez co atak XSS nie wyjdzie ponieważ konieczne jest użycie tagów <script> (< i > zostaną zamienione na '&lt;' i '&gt;' )

frameworki MOGĄ maskować takie funkcje jak właśnie htmlspecialchars() pod własnymi funkcjami filtrującymi (mogą przepuszczać dane przez kilka funkcji filtrujących)
Go to the top of the page
+Quote Post
bełdzio
post 15.10.2009, 17:32:47
Post #3





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


oczywiście, że istnieje smile.gif wystarczy pobawić się atrybutami smile.gif => http://www.beldzio.com/xss-w-serwie-wirtualnej-polski


--------------------
Go to the top of the page
+Quote Post
bmL
post 15.10.2009, 18:33:00
Post #4





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


W sumie myślałem o takim sposobie ale uważałem to za mało groźne bo kto bezmyślnie pakuje takie zmienne do tagów html. Tylko nie zwróciłem uwagi że czasem do titla się wrzuca a ostatnio coraz częściej m.in dla lepszej indeksacji przez google.

Czyli miał rację i w skrócie dodatkowo trzeba escape'ować/usunąć cudzysłowy i apostrofy smile.gif Poprawcie mnie jeżeli się mylę smile.gif


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
bełdzio
post 15.10.2009, 19:08:03
Post #5





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Cytat(bmL @ 15.10.2009, 19:33:00 ) *
Czyli miał rację i w skrócie dodatkowo trzeba escape'ować/usunąć cudzysłowy i apostrofy smile.gif Poprawcie mnie jeżeli się mylę smile.gif

poprawiam smile.gif)

  1. <p onmousemove=java script:alert(1)>dasdasd</p>


bez spacji oczywiście bbcode sam dodaje smile.gif

Ten post edytował bełdzio 15.10.2009, 19:08:35


--------------------
Go to the top of the page
+Quote Post
bmL
post 16.10.2009, 11:25:34
Post #6





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Ale nikt nie pakuje raczej zmiennych do "onmouseover" i innych atrybutów które standardowo są interpretowane jako js. ale do takich atrybutów jak "title" to się raczej dość często spotyka czyli:
  1. <?php echo '<a href="http://wp.pl" title="$nazwa_strony" /> '; ?>

Żeby zamknąć href="" i otworzyć nowy który może być interpretowany jako js. musisz użyć cudzysłowu winksmiley.jpg
Ewentualnie wypadało by jeszcze filtrować słowo "java script:" smile.gif
Chyba się nie mylę? smile.gif ponownie proszę o poprawienie jeżeli jest inaczej smile.gif

// EDIT widzę, że tutaj też chyba działa jakieś dziwne zabezpieczenie na XSS bo słowo "javascript" zamienia mi na "java script" ze spacją smile.gif Tak jak pisał poprzednik może i bbcode tongue.gif

Ten post edytował bmL 16.10.2009, 11:29:21


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.08.2025 - 18:07