XSS атаки

Pro_Lamer4e

Registered
как де се защитя от XSS и как да пробвам после какво съм направил, смисъл как сам да тест дали работи защитата
 
Сложи този код в началото на всяка една страница:
Код:
<?php
$queryString = strtolower($_SERVER['QUERY_STRING']);

if (strstr($queryString,"<") OR strstr($queryString,">") OR strstr($queryString,"(") OR strstr($queryString,")") OR
strstr($queryString,"..") OR
strstr($queryString,"%") OR
strstr($queryString,"*") OR
strstr($queryString,"+") OR
strstr($queryString,"!") OR
strstr($queryString,"@")) {
$loc = $_SERVER['PHP_SELF'];
$ip = $_SERVER['REMOTE_ADDR'];
$date = date ("d-m-Y @ h:i:s");
$lfh = "hack.txt";
$log = fopen ( $lfh,"a+" );
fputs ($log, "Attack Date: $date | Attacker IP: $ip | QueryString: $loc?=$queryString\n<br />");
fclose($log);
?>
И във файла hack.txt ще ти се записват всички атаки чрез XSS и не само.
Начин за тест: ако имаш страница, на която имаш ID или нещо друго - добави ' след всичко и това е :).
 
Този код, който е дал ilussion не предпазва, а само записва.

Ако имаш форма примерно и имаш нещо такова

$text = $_POST['text'];

Добавяш нов ред

$text = htmlspecialchars($text);

" Това няма нищо общо с xss. XSS изпълнява javascript в страницата пример: <script>alert('test')</script> и ще ти изкара прозорец test

Ако имаш $_GET, $_POST ползвай htmlspecialchars за защита против xss
 
а ако му сложиш един exit; накрая дали няма да стане кода който е дал ilussion
 
Angry каза:
Този код, който е дал ilussion не предпазва, а само записва.

Ако имаш форма примерно и имаш нещо такова

$text = $_POST['text'];

Добавяш нов ред

$text = htmlspecialchars($text);

" Това няма нищо общо с xss. XSS изпълнява javascript в страницата пример: <script>alert('test')</script> и ще ти изкара прозорец test

Ако имаш $_GET, $_POST ползвай htmlspecialchars за защита против xss

XSS не винаги "изпълнява javascript в страницата", това да има XSS уязвимост узначава, че един html, javascript код, се възпроизвежда, като код, въведен от човека, който има root достъп до файловете, въвеждайки

<font color="#000"/>TEXT</font>, пак ще видиш ефекта. Вярно е, че попринцип в момента една xss дупка, най-честно може да бъде използвана само за крадене на бисквитки, но кой знае, може да са намерели нещо по-сериозно .. Кода, който е дал @ilussion (Който не е негов, и беше хубаво да напише урока, от който е) също може да се използва по този начин, просто ще се сложи едно -

echo "Непозволени символи";
exit;

в края на кода, и до там .. Макар, че в момента не са забранени всички знаци, които е хубаво да се забранят ..
 

Back
Горе