2016-07-15 56 views
1

私はこのコメントフォームを持っていますが、唯一の入力はコメントの名前とテキストエリアです。シンプルな形式でSQLインジェクションの可能性を無効にする方法は?

質問:私のコードでSQLインジェクションを使用する方法がないことを確認するにはどうすればよいですか?私はこのためにいくつかのガイドを見つけましたが、私のコードでそれらを動作させる方法がわかりません。

<?php 
if(isset($_POST['submit'])){ 
    $pvm = date("F j, Y"); 
    $postId = $_GET["post"]; 
    $lahettaja = $_POST['name']; 
    $kommentti = $_POST['comment']; 

    $sql = "INSERT INTO kommentti (post_id,kommentti_pvm,kommentti,lahettaja) VALUES (:post,:kommentti_pvm,:kommentti,:lahettaja)"; 
    $kysely = $yhteys->prepare($sql); 
    $kysely->bindParam("post", $postId); 
    $kysely->bindParam("kommentti_pvm", $pvm); 
    $kysely->bindParam("kommentti", $kommentti); 
    $kysely->bindParam("lahettaja", $lahettaja); 
    $kysely->execute(); 
} 
?> 
+1

がhttp://stackoverflow.com/questions/60174/howのようにリンクを参照してください。 -can-i-prevent-sql-injection-in-php –

答えて

4

あなたはすでにSQLインジェクションに対して安全です。それに対して保護する唯一の方法は、適切なパラメータ化を使用して準備済みの文を使用することです。つまり、ユーザ入力を含む可能性のあるすべてのものののパラメータを持つ準備済みの文を使用します。あなたはそれをやっているので、あなたは良い形になっています。

注意:これはではありません。では、データを「クリーン」または安全に扱うことができます。たとえば、それをデータベースから取り出してechoとすることはできません。そうすることで、XSS、またはクロスサイトスクリプティング(この場合、Reflected XSS)と呼ばれる種類の攻撃が可能になります。多くを学ぶために、より多くの情報については

を参照してください。

+0

ありがとうございました!私は本当にフォームなどをチェックするために何かを追加する必要があると思っていました。私はそれを正しくやっていることを知っています。 – Frostbch

+0

@Frostbch喜んで助けてください! –

+0

@Ed Cottrell POSTデータのサニタイズはどうですか? – unixmiah

関連する問題