2011-07-28 18 views
4

私は今すべてセキュリティファンクにいるので、できる限り安全なものにするつもりです。ユーザーその後、

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

最初の例は、ログインのものであり、あなたが?authorization=1を言うならば、あなたが入るしかし、私はif($_POST)の周りに私のコードをラップする場合:私は行くログインを持って、私はこれを参照しています。投稿する必要があります。ユーザーは$_POSTを偽造できますか? $_POSTを偽造するにはどうすればいいですか?

+4

あなたは$ _POSTとは何ですか? – Jakub

+0

HTTPメソッドをチェックする正しい方法は、$ _SERVER ['REQUEST_METHOD']です(http://php.net/manual/en/reserved.variables.server.phpを参照)。基本的には、これらの変数はすべてクライアントによって影響を受ける可能性があり、完全に信頼できるものではありません。 – giraff

答えて

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> 

やブーム、「偽」のポストを。言い換えれば、ユーザーが送信するものはすべて、偽造される可能性があると想定する必要があります。

+0

ああ、ええ、私はちょうど入って、アクションを変更し、 "?認可= 1"を追加する検査要素を使用しました - それは壊れやすい愚かだったうわー。ありがとう! –

+2

+1 POSTはGETと同じように偽装するのが簡単です。また、CSRFトークンを少し説明する必要があります。 –

+1

DOMインスペクターは両刃の剣です。これらは、Web開発とセキュリティ対策を欺くのに最適です。 –

-1

...はいユーザーは投稿を「偽造」することができます。サイズについてはtamper dataを試してください。

4

はい可能です。

cURLと他のHTTPクライアントでは、誰でもこれを偽造することができます。

ウォッチこの

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

次に、ユーザは、自分のコンピュータでの.htmlとしてこれを保存し、彼のブラウザで開きます。フォームを投稿します。

3

2つの方法で、curlリクエストを作成するか、実際にはphpの上にpost変数を設定します。例えば:

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

あなたがそうのように投稿するPHPのカールを使用することができます。

$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); 
2

$ _POSTスーパーグローバル変数は、HTTP POSTリクエストのボディに含まれていますクエリ文字列から移入されます。ユーザー/クライアントはHTTPサーバーへのHTTP(POST &)リクエストを開始するユーザーであるため、クライアントは$ _POSTアレイの値&のキーを「偽造」することができます。 参照してください:あなたのウェブサイトが適切にすべてのテキストをエスケープないという問題があった場合は

-1

を、それが第三者によって悪用される可能性がありますXSSの弱点でありますAJAXを使用してユーザーのCookieと権限でポストリクエストを送信できるページに(javascript-)スクリプトを挿入することで、ユーザーにログアウトさせるなどの最悪の影響を最小限に抑えます。

0

これは古いPOSTですが、今後のデベロッパー向けに追加する予定です。

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... */ 
    } 
?> 
関連する問題