我现在都处于安全恐慌状态,所以我要尽可能地保证一切安全。我登录了,我引用了这个:
http://www.addedbytes.com/writing-secure-php/writing-secure-php-1/
第一个例子是登录的例子,如果你说?authorization=1
你就进入了。但是如果我将代码包裹在if($_POST)
附近,那么用户必须发帖。用户可以伪造$_POST
吗?我如何伪造$_POST
?
答案 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和权限,其最小的影响是它可以例如注销用户。