如何防止url参数?

时间:2016-06-17 19:13:02

标签: php

我有这个示例网站

site.com/path/file.php

我想阻止用户在file.php?id=

之后添加file.php或任何内容

我该怎么办?我想要这个请求的URL,并防止任何其他参数

我认为要做的就是解析网址,但这对参与播放有帮助吗?

我的意思是如果解析器读取file.php?id并请求页面file.php?page=

2 个答案:

答案 0 :(得分:1)

您可以使用以下命令捕获URL中的任何参数:

if (count($_GET)+count($_POST) > 0)
{
  <execute some error code>
  die('Ah, you cannot do that!');
}

答案 1 :(得分:0)

您可以尝试的一种方法是不使用同一页面来处理函数。使用AJAX请求并限制指定的Post PHP页面,如&#34; /include/processmyform.php" 或其他东西只允许AJAX请求/仅允许来自Web服务器的AJAX请求。

define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&  strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
if(!IS_AJAX) {
    #You can use this condition to ignore or block their request.
    die('That method is not allowed!');
} else {
    #If they did post AJAX, make sure it's a legitimate request from your server.
    $pos = strpos($_SERVER['HTTP_REFERER'],getenv('HTTP_HOST'));
    if($pos===false) {
        die('That method is not allowed!');
    } else {
        #All good - Cooking with hot grease!
        $id = htmlspecialchars($_POST['id']);
        $somevar = htmlspecialchars($_POST['someparam']);
    }
}