{"id":42,"date":"2012-11-05T20:41:02","date_gmt":"2012-11-05T19:41:02","guid":{"rendered":"http:\/\/lewoniewski.info\/blog\/?p=42"},"modified":"2016-11-19T10:54:05","modified_gmt":"2016-11-19T09:54:05","slug":"obrona-przed-atakami-xss","status":"publish","type":"post","link":"https:\/\/lewoniewski.info\/blog\/2012\/obrona-przed-atakami-xss\/","title":{"rendered":"Obrona przed atakami XSS"},"content":{"rendered":"<p>XSS (cross-site scripting) &#8211; spos\u00f3b ataku na serwis WWW polegaj\u0105cy na osadzeniu w tre\u015bci atakowanej strony kodu (zazwyczaj JavaScript). Haker tworzy specjalny adres URL, za pomoc\u0105 kt\u00f3rego mo\u017ce wykonywa\u0107 z\u0142o\u015bliwy skrypt.<!--more--><\/p>\n<p>Najczesniej b\u0142\u0119dy typu xss wykorzystuje si\u0119 do wykradania danych u\u017cytkownika (kradzie\u017cy kont) i tym samym zwi\u0119kszania uprawnien na serwerze (mo\u017cna np. bez znajomosci has\u0142a admina dzia\u0142ac z jego uprawnieniami na stronie). Poprzez sam b\u0142\u0105d xss mo\u017cna te\u017c podejrze\u0107 jaki\u015b plik na atakowanym serwerze (je\u015bli np. b\u0142\u0105d xss tyczy si\u0119 \u0142adowania plik\u00f3w na stronie www).<\/p>\n<p>Na przyk\u0142ad, witryna jest zasilana przez PHP, i strona jest informacj\u0105 o kontach u\u017cytkownik\u00f3w. URL najcz\u0119\u015bciej w takich przypadkach wyg\u0142ada nast\u0119puj\u0105co:<\/p>\n<p><code>przykladowastrona.pl\/profile.php?user=Sylwia<\/code><\/p>\n<p>W tym adresie URL nie jest z\u0142y, ale najbardziej nara\u017cony punkt mo\u017ce si\u0119 ukrywa\u0107 w kodzie PHP stron, na przyk\u0142ad:<br \/>\n<code><br \/>\n&lt;?php<br \/>\necho \"Informacje o profilu\". $_GET['user'];<br \/>\n?&gt;<\/code><\/p>\n<p>Jak wida\u0107, dane GET nie s\u0105 one filtrowane i wyprowadzaj\u0105 sie bezpo\u015brednio na stronie. Wi\u0119c mo\u017cemy zmodyfikowa\u0107 adres URL do tego:<\/p>\n<p><code>przykladowastrona.pl\/profile.php?user=Sylwia - witam<\/code><\/p>\n<p>Przy wykonaniu tego kodu na stronie pojawi si\u0119 komunikat (&#8222;witam&#8221;) obok nazwy u\u017cytkownika. To nie jest najgorsze, teraz spr\u00f3bujmy to:<\/p>\n<p><code>przykladowastrona.pl\/profile.php?user=Sylwia&lt;script&gt;alert (0); &lt;\/script&gt;<\/code><\/p>\n<p>I ju\u017c to jest gro\u017ane, teraz haker u\u017cywa dziur\u0119 i w stanie zrobi\u0107 co chce.<\/p>\n<p>Jak si\u0119 chroni\u0107 przed atakami XSS? Odpowied\u017a jest prosta, trzeba elementarn\u0105 filtrowania danych &#8211; wszystkie dane otrzymane przez POST lub GET.<\/p>\n<p>Oto przyk\u0142ad funkcji w PHP, kt\u00f3re mog\u0105 pom\u00f3c:<\/p>\n<p><code>&lt;?php<br \/>\n\/\/ Obrona przed XSS<br \/>\nfunction _filtracja( $var , $sql = 0) {<br \/>\n$var = strip_tags($var);<br \/>\n$var=str_replace (\"\\n\",\" \", $var);<br \/>\n$var=str_replace (\"\\r\",\"\", $var);<br \/>\n$var = htmlentities($var);<br \/>\nif ( $sql == 1) {<br \/>\n$var = mysql_real_escape_s<br \/>\n}<br \/>\nreturn $var;<br \/>\n}<br \/>\n?&gt;<\/code><\/p>\n<p>Wykorzystywanie:<br \/>\n<code>&lt;?php echo _filtracja($_GET['value']); ?&gt;<\/code><\/p>\n<p>Wt\u00f3rny parametr $sql przeznaczony do ochrony SQL-iniekcji. musi by\u0107 ustawiony na 1 podczas filtrowania danych do zapytania SQL, na przyk\u0142ad:<\/p>\n<p><code>SELECT... LIMIT 0, _filtracja($_GET ['limit'],1)<\/code><\/p>\n<p>Jest to, jak \u0142atwo mo\u017cna za\u0142ata\u0107 dziur\u0119 XSS na stronie.<\/p>\n<p>P.S.: Odr\u0119bne podzi\u0119kowania dla Micha\u0142a za pomys\u0142 i dodatkow\u0105 informacje \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>XSS (cross-site scripting) &#8211; spos\u00f3b ataku na serwis WWW polegaj\u0105cy na osadzeniu w tre\u015bci atakowanej strony kodu (zazwyczaj JavaScript). Haker tworzy specjalny adres URL, za pomoc\u0105 kt\u00f3rego mo\u017ce wykonywa\u0107 z\u0142o\u015bliwy skrypt.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[22,24,18,21,23,19],"class_list":["post-42","post","type-post","status-publish","format-standard","hentry","category-artykuly","tag-haker","tag-internet","tag-javascript","tag-php","tag-programowanie","tag-xss"],"_links":{"self":[{"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/posts\/42","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/comments?post=42"}],"version-history":[{"count":0,"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/posts\/42\/revisions"}],"wp:attachment":[{"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/media?parent=42"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/categories?post=42"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/tags?post=42"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}