SQL インジェクション攻撃が実行された場合、攻撃者はポート 80 経由でデータベース全体を転送できると著者が言及した記事で Sql インジェクションに関する記事を読んでいました。私の質問は、http ポート経由でデータベースを転送する方法はありますか?それをするために ?データベースの乗っ取りから身を守るにはどうすればよいですか
http://msdn.microsoft.com/en-us/magazine/hh580736.aspx
ポート 80 経由でデータベース全体を転送する
SQL インジェクション攻撃が実行された場合、攻撃者はポート 80 経由でデータベース全体を転送できると著者が言及した記事で Sql インジェクションに関する記事を読んでいました。私の質問は、http ポート経由でデータベースを転送する方法はありますか?それをするために ?データベースの乗っ取りから身を守るにはどうすればよいですか
http://msdn.microsoft.com/en-us/magazine/hh580736.aspx
ポート 80 経由でデータベース全体を転送する
SQL インジェクションとは、コード (通常はポート 80 を説明する Web コード) に脆弱性があることを意味し、サードパーティが必要な SQL コマンドをデータベースで実行できるようにします。あなたがこれに対してオープンなままにしておくと、彼らがやりたいことをするのを防ぐことはできません.
それを回避する方法は、プログラミングしている特定の言語 (Python、Ruby、Java など) によって異なりますが、2 つの主なポイントは、「入力を適切にサニタイズすることです。つまり、文字が適切にエスケープされていることを確認して、誰かができるようにすることです」たとえば、セミコロンを挿入して混乱を招くと、クエリをパラメータ化します. これは、SQL クエリを記述するときに、ユーザー定義の入力にパラメータを使用し、それらのパラメータを安全に埋めることを意味します. Perl では、次のように使用します:
$sth = $dbh->prepare("SELECT * FROM TABLE WHERE id = ?");
$sth->execute($id);
それらをプレースホルダーと考えてください。
繰り返しますが、これの正確な方法は、選択した言語によって異なります。
これを理解したら、あなたは道を進んでいます:http://xkcd.com/327/
そのような措置をとることは絶対に意味がありません。
これは、 1 つの脆弱性によって可能になる数十億のエクスプロイトのうちの 1 つにすぎません。つまり、ふるいの穴を埋めるようなものです。つまり、エクスプロイトを 1 つだけ開いたままにしておくのと同じように、面倒でまったく役に立たない作業です。それが使用されます。
その代わりに、SQL インジェクションからサイトを保護するだけです。
私の推測では、注入できる場所があれば、次の手順で注入できる可能性があります。
- DB を SQL でバックアップするか、すべてのデータをファイルにスクリプト化します
- SQL Serverのxp_cmdshellのように、いくつかのDBMS関数を使用してそのファイルをWebサーバーにコピーし、インターネットに公開します
- Web サーバー経由でダウンロードする