またはSQLインジェクションからユーザーデータを保護する方法
楽しい事実:
sqlインジェクションは、ウェブサイトがデータベースにデータを格納して以来、かなりの周りされています。
Open Web Application Securityプロジェクトは、インジェクション攻撃をwebアプリケーションが直面するトップ10の脅威の2017の一つと評価しました。,
SQLインジェクションは、依然として多くの大規模なデータリークの原因です。 2016年、イリノイ州とアリゾナ州の選挙管理委員会の有権者登録データベースが破られました。 アリゾナ州では情報は盗まれませんでしたが、イリノイ州では、約80,000人の名前、住所、生年月日、性別、社会保障番号の一部などの有権者データにアクセ√
それは恐ろしいです、それは何ですか?
SQLインジェクションタイプの攻撃目標がアプリケーションのデータベースを通じて、挿入の意図しないコードユーザー入力ます。, Sql構文を利用することにより、攻撃者は入力フィールドを使用して、パスワードやクレジットカード番号などのデータベースから情報を取得できます。 誰かがあなたのデータベースの制御を取るか、または保持する情報すべてを削除できる。
それはどのように動作しますか?
SQLインジェクションは、フィールドに挿入された情報を使用して、対応するSQL文を操作して意図しないアクションを実行することによって機能,
基本的な例は次のとおりです。
SELECT * FROM customers WHERE name = " + user_name + ";
この例では、変数user_nameがwebサイト上のユーザーの入力から直接作成されるとします。 その文字列が上記のSQL文に挿入され、そのユーザー名に関連するすべてのフィールドが返されます。 大したことないしかし、誰かがSteve”OR1=1;—ユーザー名として入力した場合はどうなりますか? 次に、生成されたSQLは次のようになります。
SELECT * FROM customers WHERE name = "Steve" OR 1=1;--";
1=1は常にtrueなので、これはテーブル内のすべてのデータを返します。 良くない!,
Let’s take one more look at that comic.
The son’s name is Robert’); DROP TABLE students; — What would that do exactly?,P>
INSERT INTO students (name) VALUES ('<Student Name>');
…そして、Bobbyを挿入すると…
INSERT INTO students (name) VALUES ('Robert'); DROP TABLE students;--');
ボビーの名前には)が含まれているため、VALUES引数は彼の名前の途中で閉じられ、DROP TABLE studentsに続くテキストは新しいSQLテーブル全体を削除するステートメント。 最後に、—最後に残りのSQLをコメントアウトし、元のコードの残りの部分を本質的に無視し、エラーが発生しないことを確認します。,
非常に単純でよく理解されているものが依然として非常に多くのビッグデータ侵害の原因であると考えるのはおかしいです。, 上記の有権者登録ハッキングや最近のEquifax違反(SQLインジェクションによるものではなく、同社が対処できなかった同様の脆弱性によるものです)のような高プロファイルのインスタンスでさえ、脆弱性の根源は人為的なエラーと細部への注意の欠如にあります。 は慎重に考え、問題を大きく近づくことを可能とする手の保護のたユーザーデータから共通違反は、特にSQLインジェクション.
コメントを残す