PHP防XSS攻擊


XSS攻擊

什么是XSS攻擊

代碼實例:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>XSS原理重現</title>

</head>

<body>

<form action="" method="get">

<input type="text" name="xss_input">

<input type="submit">

</form>

<hr>

<?php

$xss = $_GET['xss_input'];

echo '你輸入的字符為<br>'.$xss;

// echo '你輸入的字符為<br>'."<script>alert('xss')</script>";

?>

</body>

</html>

注意:如果要表單提交數據到自己頁面,action就設置為空

如果我們在表單中輸入的是"<script>alert('xss')</script>",那么,我們接收到的結果就是

echo '你輸入的字符為<br>'."<script>alert('xss')</script>";

於是就彈出了alert框,相當於就修改了程序。除了這些,還能制造其他麻煩,刷新或重定向,損壞網頁或表單,竊取cookieAJAX(XMLHttpRequest)

注意:有些瀏覽器自身可以識別簡單的XSS攻擊字符串,從而阻止簡單的XSS攻擊;例如chrom,我在chrom中做實驗的時候,就會自動阻止,但獵豹瀏覽瀏覽器就不行。

 

XSSCross Site Scripting)攻擊的全稱是跨站腳本攻擊,跨站腳本攻擊的方式是惡意攻擊者在網頁中嵌入惡意腳本程序,當用戶打開網頁的時候腳本程序便在客戶端執行,盜取客戶的cookie及用戶名和密碼,下載執行病毒及木馬程序,甚至獲得客戶端的admin權限等。

 

預防XSS攻擊

從根本上說,解決辦法是消除網站的XSS漏洞,這就需要網站開發者運用轉義安全字符等手段,始終把安全放在心上。

簡單點,就是過濾從表單提交來的數據,使用php過濾函數就可以達到很好的目的。

htmlspecialchars() 函數

代碼實例:

<?php  

if (isset($_POST['name'])){  

    $str = trim($_POST['name']);  //清理空格  

    $str = strip_tags($str);   //過濾html標簽  

    $str = htmlspecialchars($str);   //將字符內容轉化為html實體  

    $str = addslashes($str);  //防止SQL注入

    echo $str;  

}  

?>  

<form method="post" action="">  

<input name="name" type="text">  

<input type="submit" value="提交" >  

</form> 

 

htmlspecialchars() 函數相當於單引號的功能,不會進行解釋,你輸入什么就是什么,和防SQL注入很類似。

函數詳解:http://www.runoob.com/php/func-string-htmlspecialchars.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM