Hiện tại em đã cài Apache 2.2.11, MySql 5.0.77, PHP 5.2.9 trên OS Ubuntu 8.10 và muốn demo lỗi XSS nhưng gặp một vấn đề sau:
Em có tạo một file xss.php như sau:
Code:
<html>
<form name="input" action="xss.php" method="get">
Your name: <input type="text" name="name">
<input type="submit" value="OK">
</form>
</html>
<?php
$name=$_GET["name"];
echo "Xin chao $name";
?>
File này rõ ràng là mắc lỗi XSS. Khi em vào trình duyệt và gõ:
Code:
http://localhost/xss.php?name=<script>alert(123)</script>
thì script được thực thi. Nhưng khi thay bằng:
Code:
http://localhost/xss.php?name=<script>alert("XSS")</script>
thì không có hiện tượng xảy ra. Nguyên nhân là do khi nhập vào các kí tự như " hay ' thì thấy nó tự thêm kí tự \ vào trước và in ra là Xin chao \", Xin chao \'.
File xss.php này khi chạy trên OS Windows thì dính XSS như bình thường, kể cả:
Code:
http://localhost/xss.php?name=<script>alert("XSS")</script>
thì script vẫn được thực thi.
Vấn đề ở đây là em không hiểu tại sao trong Apache khi mình nhập " hay ' thì nó lại tự thêm vào thành \" , \' .
Cái này do một module nào đó của Apache hay vì cái gì em không rõ, mong mọi người giải thích giùm em. Apache vừa cài xong là em test cái này luôn, chưa cài mod_security hay bất kì module nào khác.
Em xin cảm ơn !