-1

私は最近、ラジオ ボタンのみを含むフォームに関する質問をしました.経験豊富なユーザーが回答し、SQL インジェクションに対して広くオープンであると私に言いました。誰かが方法を説明してもらえますか? - テキストのユーザー入力はありません。

4

4 に答える 4

2

ユーザーは HTML を簡単に編集したり、送信内容を変更したりできます。ラジオ ボタンだからといって、値を変更できないわけではありません。インジェクションを引き起こす可能性のある値を含め、何でも設定できます。

一般的なブラウザ ツールを使用すると、ユーザーは HTTP リクエストを変更できるため、誰かが簡単にラジオ ボタンの値を任意の値に変更することができます。

于 2013-02-15T11:34:10.003 に答える
1

すべてのユーザーは、Firefox のFirebugや Chrome に含まれている DOM エクスプローラーを使用してこれらのフィールドを編集できます。(検査要素オプション)

ユーザー入力はありませんが、ユーザーは引き続き DOM 構造を編集して含むことができます。

しかし、それらを編集するだけではありません。サイトがクロスサイト スクリプティング攻撃 (XSS)に対して安全でない場合、誰でも自分のコンピューターまたはホストで自分の入力を使用してフォームを作成し、それを によってサイトに送信できますPOST

セキュリティと PHP の詳細については、このサイトを参照してください。

入力のフィルタリングとは別に、SQL インジェクションを回避する最善の方法は、PDOまたは準備済みステートメントを使用して DB への安全な呼び出しを使用することです。

例えば:

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);


// insert one row
$name = 'one';
$value = 1;
$stmt->execute();
于 2013-02-15T11:34:08.423 に答える
1

フォームは、ユーザーが HTTP エンドポイントにデータを送信する手段を提供しますが、データを送信するためにフォームを使用する必要はありません。たとえば、独自のフォームを作成したり、手動で HTTP 要求を作成したりできます。

あなたがクライアントに送信するものは、人々が望むものを送信するのを妨げるものではありません.

エンドポイントは、受信する入力を制御できないため、あらゆる入力に対して安全である必要があります。

于 2013-02-15T11:34:43.277 に答える
0

悪意のあるユーザーは、サーバーへの独自の POST 要求を作成するためにフォームを必要としません。サーバーが受け入れるフォームキーを知っているだけで、そこに独自のリクエストを作成できます。

エスケープされていない$_POST/$_GET/$_REQUEST/$_COOKIE/(some $_SERVER)値をクエリに直接挿入できるようにしている場合は、影響を受けます。

安全のために、PDO または mysqli でパラメータ化されたクエリを使用してください。

この投稿をお読みください: PHP で SQL インジェクションを防ぐにはどうすればよいですか?

于 2013-02-15T11:34:33.673 に答える