2017-02-04 2 views
0
$s = "Update member_date" [snip] 
$p = $pdo->prepare($s, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); 
$p->execute(); 

SQL注入型攻撃から安全であることを正当化する "準備済み"私はサンプルコードを持っていますが、PDOが安全かどうかを知る必要があります(MySQL)

UPDATE:

$member_id= htmlspecialchars($_GET['member_id']); 
s1 = " 
update member_date 
set member_date= now() 
where member_id= $member_id"; 

OVERALL QUESTION?:「私はちょうど最後に私の(新しい)エラーを読んだ後、古いmysqlの文からスイッチを作ってるんだ、私はすべての私の新しいSQL関連のコードをフォーマットする必要がありますどのようにこのですログには文字列などの疑問符のプレースホルダーを追加する必要がありますかセキュリティ上の目的でコードの最初の行に書かれている形式ですか?セキュリティパーツ "

+1

実際の 'update'ステートメントを共有する必要があります。悪魔は細部にいる。 – Mureinik

+1

悪魔は[snip]です:-) –

+0

私は今それをしました。ありがとう – BluTiger

答えて

-2

PDOは、サーバーを攻撃する可能性のあるSQLインジェクションを避ける最も良い方法です。コードはうまく見えます。しかし、PHP PDOは、SQLインジェクションを避ける絶対的な方法です。

+0

PDOだけでSQLインジェクションを回避できますか? – BluTiger

+0

@BluTiger - いいえ! –

+0

「PHP PDOはSQLインジェクションを避ける絶対的な方法です」と言ったので、私は不思議に思っていました。 – BluTiger

0

いいえあなたは、意図したとおりに準備されたステートメントを使用していません。あなたがするべきことは、$idをパラメータとして追加することで、あなたのコード(sql)とあなたのコンテンツ(id)を分けることです。

あなた自身をフィルタリングして、安全なSQLを行うことができますが、絶対的な最善の方法は、あなたがそれを置くようにです:

疑問符文字列のプレースホルダとすることができますように

に追加たとえば、「これはintである必要があります。"のような怖いものではありません。または、クエリで魔法を使うコードでは決してありません。

+0

ありがとうございました。 – BluTiger

関連する問題