質問
現在クライアントシステムを作っているのですが、
SQLインジェクション対策を付けるべきか、付けないべきか迷っています。
クライアントシステムなのでシステムが入っているクライアントしかDBに接続できないし、
不特定多数の人がDBに触ることにもならないので、いらないのかなと思っています。
それとも、システムを使う特定の人たちにも疑いの目を向けて対策しておくべきなのでしょうか。
社内システムなどを作るときなどはどのようにするのか教えていただけると幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答7件
0
入力されるデータがどんな状態であってもエスケープの必要の無いデータであることが保証されているのであれば必要無いかと思います。
それとも、システムを使う特定の人たちにも疑いの目を向けて対策しておくべきなのでしょうか。
社内システムなどを作るときなどはどのようにするのか教えていただけると幸いです。
疑うべきは「特定の人たち」では無く、入力され得るデータの範囲です。
- 通常の入力ではエスケープするべき文字列が入る可能性が無いのか
- 入力ミスや悪意によって想定しない文字列が入る可能性は無いのか
- 標的型攻撃等によって想定しない文字列が入る可能性は無いのか
- 仮に発生したとして、復旧やデータ漏洩に対して何とか問題を解決できるのか
あたりを完全に精査して開発の要件から外せるのであれば、前述の通り必要ありません。
例えば、特定の端末の特定のインターフェイス(例えば、ATMの様に指定桁数の数字しか入力できないタッチパネル等)からしか入力できないシステムであれば、SQLインジェクション対策をしなくても問題にならない可能性が高いと思います。(私ならそれでも入れておきますが)
が、そんなことを精査する&将来に渡って保証し続けるくらいなら一律で静的プレースホルダーによるSQLインジェクション対策を行っておく方がよほど楽です。
投稿2020/12/03 11:06
編集2020/12/03 11:08総合スコア18727
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
SQLインジェクション対策を付けるべきか、付けないべきか迷っています。
そんなことに迷ってないで、当たり前のこととして対策すべきです。
【追記】
どのようなアプリか書いてないので分かりませんが、例えばクエリをパラメータ化するという当たり前にやるべきことをやっておくだけでも、SQL インジェクションの防止になります。詳しくは以下の記事を見てください。
パラメータ化クエリ
http://surferonwww.info/BlogEngine/post/2012/02/02/Parameterized-query.aspx
ただし、以下の記事に書いてありますが「高いスキルを持つ決然たる攻撃者は、パラメータ化されたデータであっても操作できるのです」というのはその通りで、そこに書いてある「すべての入力の検証」なども考えるべきと思います。
SQL インジェクション
https://docs.microsoft.com/ja-jp/previous-versions/sql/sql-server-2008/ms161953(v=sql.100)
投稿2020/12/03 09:02
編集2020/12/03 11:19退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
それとも、システムを使う特定の人たちにも疑いの目を向けて対策しておくべきなのでしょうか。
世の中を騒がせているセキュリティ事故の要因の多くはヒューマンエラーです。
人が操作する限り絶対はありません。
意図せずやってしまうことだってあります。
事故を起こしたい人のほうが少ないわけで、
そんな中でも事故が起こるのは一瞬の不注意。
セキュリティ対策の本質は「ユーザー操作は信用しない」ことです。
プログラムは書いたとおりにしか動きませんから、
送られてきた情報は組まれているプログラムの通り処理されます。
何も対策してなければ、どんなに汚染された情報が送られてきても何もしません。
「特定の人たち」と言っても、同じ人が永遠に操作するわけではありません。
となると、半永久的に入れ替わり続け多くの人が操作することになります。
その中で絶対のミスもない、絶対に悪意がない ありえるでしょうか?
当然、システムを提供する、メンテナンスをする方もずっと同じ人ではないです。
対策をしなくて大損することはあるでしょうけど(時に双方致命的になる)
対策をしておいて損することは基本的にないです。
投稿2020/12/03 14:22
編集2020/12/03 14:24総合スコア80875
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
対策と言ってもエスケープする程度で十分かと思いますので
工数がそこまでかからないなら対策したほうがいいんじゃないでしょうか??
投稿2020/12/03 09:13
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。