народ прошу помочь с xss... как можно вывести алерт при таком php коде?(guestbook) PHP: <?php if(isset($_POST['btnSign'])) { $message = trim($_POST['mtxMessage']); $name = trim($_POST['txtName']); // Sanitize message input $message = trim(strip_tags(addslashes($message))); $message = mysql_real_escape_string($message); $message = htmlspecialchars($message); // Sanitize name input $name = trim(strip_tags(addslashes($name))); $name = mysql_real_escape_string($name); $query = "INSERT INTO guestbook (comment,name) VALUES ('$message','$name');"; $result = mysql_query($query) or die('<pre>' . mysql_error() . '</pre>' ); } ?> как быть с этим? ============================================== $message = trim(strip_tags(addslashes($message))); $message = htmlspecialchars($message);
ага, это так но в PHP: $name = trim(strip_tags(addslashes($name))); тут все пробелы и скрипты удаляються... как это можно обойти? и еще: в переменную $name разрешено всего 10 символов!
В том коде, что ты привел, я не вижу, что бы он обрезался. Если ограничение стоит на форму, то редактор исходников страницы тебе в помощь. Правда, возможности внедрить код я не наблюдаю всё равно. P.S. dvwa пройти невозможно, на высоких уровнях имеются непроходимые задания, и судя по всему это одно из них.
Ок, есть скрипт. PHP: mysql_connect('localhost','root',''); mysql_select_db('bf'); if(isset($_GET['btnSign'])) { $message = trim($_GET['mtxMessage']); $name = trim($_GET['txtName']); // Sanitize message input $message = trim(strip_tags(addslashes($message))); $message = mysql_real_escape_string($message); $message = htmlspecialchars($message); // Sanitize name input $name = trim(strip_tags(addslashes($name))); $name = mysql_real_escape_string($name); $query = "INSERT INTO guestbook (comment,name) VALUES ('$message','$name');"; print $query; mysql_query($query) or die(mysql_error()); } Удачи.