2011-09-10 16 views
0

私はファイルを処理しているPHPフォームを持っています。理想的には処理ファイルを保護する方法

<?php 
    $value = $_POST['string']; //Assume string is safe for database insertion 
    $result = mysql_query("INSERT into table values {$value}"); 
    if($result) { 
     return true; 
    } else { 
     return false; 
    } 
?> 

としてコードでファイル名process.phpを言って、私のウェブサイトにログインしています唯一の誰かがその挿入を実行するために、そのPOSTリクエストを送信することを許可されなければなりません。しかし、ここでは、この処理ファイルのパスと送信されているリクエストを知っている人なら、(もし間違っていないならば)どんなドメインからでも偽のPOST要求を送ることができます。これにより、不要なデータがデータベースに挿入されます。

私がしたことは、挿入前に、ユーザーがログインしているかどうかを確認したことです。そうでなければ、私はPOSTリクエストを無視します。しかし、どのように私の処理ファイルを悪用から確実に保護するべきですか?

答えて

0

これは、SQLインジェクションに対して脆弱であることを表しています。ファイルの挿入にはPDOのようなパラメータ化されたクエリライブラリを使用し、mysql "blob"または "long blob"型を使用するようにしてください。 mysql_query()は決して使用しないでください。

また、ユーザーのアクセス制御のためにユーザーのIDを追跡する必要があります。これはあなたがこれを考慮に入れたようには見えません。

関連する問題