|
<?
echo("<p>search results for query:").
$_GET['query'].".</p>";
?>
這段代碼的主要問題在于它把用戶提交的數(shù)據(jù)直接顯示到了網(wǎng)頁上,從而產(chǎn)生XSS漏洞。其實有很多方法可以填補這個漏洞。那么,什么代碼是我們想要的呢?
復(fù)制代碼 代碼如下:
<?
echo("<p>search results for query:").
htmlspecialchars($_GET['query']).".</p>";
?>
這是最低要求。XSS漏洞用htmlspecialchars函數(shù)填補了,從而屏蔽了非法字符。
復(fù)制代碼 代碼如下:
<?php
if(isset($_GET['query']))
echo'<p>search results for query:',
htmlspecialchars($_GET['query'],ENT_QUOTES).'.</p>';
?>
能寫出這樣代碼的人應(yīng)該是我想要錄用的人了:
*<?被替換成了<?php,這樣更符合XML規(guī)范。
*在輸出$_GET['query']值前先判斷它是否為空。
*echo命令中多余的括號被去掉了。
*字符串用單引號限定,從而節(jié)省了php從字符串中搜索可替換的變量的時間。
*用逗號代替句號,節(jié)省了echo的時間。
*將ENT_QUOTES標(biāo)識傳遞給htmlspecialchars函數(shù),從而保證單引號也會被轉(zhuǎn)義,雖然這并不是最主要的,但也算是一個良好的習(xí)慣
php技術(shù):劣質(zhì)的PHP代碼簡化,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。