skillup

技術ブログ

Database サーバー・ネットワーク

SQLインジェクション

投稿日:2017年2月2日 更新日:

セキュリティ関係の知識がぬるいのでちょっとお勉強。

知っていることもあるが復習もかねて勉強を。

SQLインジェクションとは?

SQLの不備を利用して、システムを攻撃されること。

具体的な攻撃方法はWikiが詳しい

被害

データベースを攻撃されることになるので個人情報の漏洩、データの改ざん

対策

  • SQL文の組み立てはすべてプレースホルダで実装。(あるいは引数のすべてにエスケープ関数を使う)
  • エラーメッセージをブラウザに表示しない。情報を与えない。
  • エラーメッセージ自体はログに正常に吐く
  • 正規表現チェックなど値のチェックを入れる
  • データベースに適切なアカウントを与える(必要以上の権限を付与しない。なるべく必要最低限の範囲で済ませる。)

もっと詳しく知りたい場合は下記リンクで。

参考サイト・書籍

安全なウェブサイトの作り方

安全なSQLの呼び出し方

安全なWebアプリケーションの作り方

ソース

https://github.com/umanari145/secure

-Database, サーバー・ネットワーク
-

執筆者:


  1. […] SQLインジェクション […]

comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

SQL基礎 条件式はunionよりもcaseで

複雑な条件式があったときにcase式を使うことでパフォーマンスを向上させることができます。 ※一般にunionを使うよりも高速なことが多い。 例1 ある条件により別の列を使いたいとき、 [crayon …

no image

Vagrantでのフォルダ共有

Contents1 vagrantとホストOSのフォルダの共有2 ネットワークアダプタ設定3 任意のディレクトリをマウント vagrantとホストOSのフォルダの共有 ディフォルトではvagrantは …

no image

MySQL小ネタ テーブル単位のリストア・SQLの小ネタ(バックスラッシュの検索)

MySQLのちょい小ネタ。 Contents1 テーブル単位でバックアップ&リストア2 バックスラッシュの入ったSQLについて テーブル単位でバックアップ&リストア 1 通常のdump(データベース単 …

no image

persistence.xmlのプロパティについて

JavaEEではデータベースとの設定情報はpersistence.xmlに記述します。 (ユーザー名、パスワード、ポート、driver名、データベース名などの情報はglassfish-resource …

no image

HAVING句がらみの計算式

「達人に学ぶSQL徹底指南書」読んでますが、かなり難しいものがでてきましたね。 テーブルは前回のものと同じ以下のものを使います。 name | income ————+——– サンプソン | 4000 …