通过PHP伪造$ _POST

时间:2011-07-28 18:58:47

标签: php security http post

我现在都处于安全恐慌状态,所以我要尽可能地保证一切安全。我登录了,我引用了这个:

http://www.addedbytes.com/writing-secure-php/writing-secure-php-1/

第一个例子是登录的例子,如果你说?authorization=1你就进入了。但是如果我将代码包裹在if($_POST)附近,那么用户必须发帖。用户可以伪造$_POST吗?我如何伪造$_POST

8 个答案:

答案 0 :(得分:15)

用户只需在本地计算机上创建一个文件:

<form action="http://yoursite.com/login.php" method="post">
    <input type="text" name="username"  value="hahaha faked it!" />
    <input type="text" name="password" value="hee hee you can't tell this is fake" />
    <input type="submit">
</form>
繁荣,“虚假”的帖子。换句话说,你必须假设用户发送的任何内容都可能是伪造的。

答案 1 :(得分:4)

是的,他们可以。

使用cURL和其他HTTP客户端,任何人都可以伪造这个。

观看此

<form method="post" action="http://yoursite/index.php">
    <input type="text" name="authorization" value="1" /><input type="submit">
</form>

然后用户将此格式保存为计算机中的.html,并在其浏览器中打开。然后发布表单。

答案 2 :(得分:4)

两种方式,发出curl请求,或者实际在php上设置post变量。 E.g:

$_POST['var'] = "WHAT I WANT";

答案 3 :(得分:2)

您可以在PHP中使用cURL进行POST,如下所示:

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch,CURLOPT_POST, 1); 
curl_exec($ch);
curl_close($ch);

答案 4 :(得分:2)

$ _POST超全局变量是从HTTP POST请求正文中包含的查询字符串填充的。由于用户/客户端是向HTTP服务器发起HTTP(POST和其他)请求的人,然后是 - 客户端可以“伪造”$ _POST数组的值&amp;键。 参阅:

答案 5 :(得分:0)

在HTML所在的任何页面中。这是第一件事。

<?php
    session_start();
    /** Generate some random numbers */
    $wipit = rand(0,999999999);
    /** Store the WIPIT Generators value in the SESSSION */
    $_SESSION["WIPIT"] = $wipit;
?>

在你正在进行POSTING验证和其他事情的任何页面中执行此操作。

<?php
    session_start();
    /** Check for the REQUEST TYPE and SESSION WIPIT */
    if( isset( $_SERVER['REQUEST_METHOD']) == "POST" and isset($_SESSION["WIPIT"]) and !empty($_SESSION["WIPIT"]) ){
        /* Rest of your code goes here... */
    }
?>

答案 6 :(得分:-1)

...是的,用户可以&#34;假的&#34;一个帖子(无论那意味着什么)。请尝试使用tamper data

答案 7 :(得分:-1)

如果您的网站存在无法正确转义所有文本的问题,那么第三方可以通过向页面中注入(javascript-)脚本来利用XSS漏洞,该脚本可以使用AJAX发送帖子请求。用户cookie和权限,其最小的影响是它可以例如注销用户。