我对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