我對PHP相當陌生,正在使用幾個_GET變量來確定頁面佈局/ Web服務數據以及頁面上的其他邏輯。我不存儲數據或寫入任何類型的數據庫。我應該使用什麼樣的消毒方法?我應該如何清理僅在頁面上使用的_GET變量?
例如,一個變種我使用的是這樣的:?
$querystring = $_SERVER['QUERY_STRING'];
if(isset($_GET['semester']) && $_GET['semester'] != ''){
$listxml = simplexml_load_file("http://path/to/webservice/?".str_replace('semester','term',$querystring));
這是怎麼回事但如果該查詢字符串有學期=集,而不是空白的,然後我用「術語」替換它並將查詢字符串按原樣傳遞給Web服務URL(Web服務使用術語變量,但術語變量干擾wordpress並重定向到該術語的帖子頁面(WP中的標記/類別),因此我通過WP作爲學期,然後只是改變它的網絡服務電話的期限
所以在這種情況下,我沒有做任何與_GET除了傳遞它就像Web服務一樣,Web服務對查詢字符串的處理不在我手中,但是我應該以任何方式爲他們「準備」它?
-
我也得到了類似這樣的情況:
$display = '';
if (isset($_GET['display'])) {
$display = $_GET['display']; //set sort via querystring
} else {
$display = 'interest'; //set to default by interest
}
後:
<div id='byalphabet' class='<?php global $display; if($display != 'alphabet'){echo 'hide';} ?>'>
和
<div id="byinterest" class="<?php global $display; if($display != 'interest'){echo 'hide';} ?>">
-
而且使用一段JavaScript動態:
$view = '';
if (isset($_GET['view'])) {
$view = $_GET['view']; //set view via querystring
}
後來:
<script>
<?php if ($view != ''){ $view = str_replace('/','',$view); ?>
jQuery('#<?php echo $view; ?>').trigger('click'); //activate view option accordion pane
jQuery('html,body').animate({'scrollTop':jQuery('#<?php echo $view; ?>').offset().top - 50},500); //scrollTo view
</script>
-
其他情況包括尋找一個_GET值array_search($_GET['major'], $slugs);
一個數組,並使用重定向頁面:
$parts = explode('/',$_SERVER['REQUEST_URI']);
Header("HTTP/1.1 301 Moved Permanently"); //SEO friendly redirect
Header("Location: http://www.site.ca/programs/outline/".$parts[3]."/");
Ed它:我已經閱讀了很多彈出的類似問題,但他們大都指的是以某種其他方式使用數據,例如插入數據庫。
'視圖=「);警報(」 XSS'就大功告成了 – Gumbo 2013-04-25 15:53:58
@Gumbo它似乎沒有工作 - 這可能PHP自動改變? ('''); alert('click');' – tsdexter 2013-04-25 17:36:24
或者使用'jQuery'('#'); alert('click');或者使用' ('XSS'); jQuery('#'以'jQuery('#'); alert('XSS'); jQuery('#' ).trigger('click');'這也只是拋出JS錯誤 - 我似乎無法得到它接受報價,因爲與HTML實體,百分之實體或直接引號字符..我知道我仍然需要消毒但PHP會自動處理報價? – tsdexter 2013-04-25 17:39:37