回答編集履歴
1
日本語変なところを修正
answer
CHANGED
@@ -10,23 +10,21 @@
|
|
10
10
|
例えば、情報を1件だけ取得することが意図されているSQL文に対して、その1件の絞込みを回避するようなコードを入れ込んで、全件取得するようなこととか、ですね。
|
11
11
|
※上記Wikipediaの実行例参照
|
12
12
|
|
13
|
-
基本的にはHTMLから
|
13
|
+
基本的にはHTMLから送信された情報をそのままデータベースの問い合わせに利用するのは良くありません。
|
14
|
-
というのは、どこの誰が使うか
|
14
|
+
というのは、どこの誰がどのように使うかは作った側は基本選べないため、**ユーザからの入力送信内容は一切信用しない**という原則があるからです。
|
15
|
-
そのため、よく
|
15
|
+
そのため、よくあるのが、半角英数のみと書いてあるところに日本語を打って送信しようとしたら「不正文字です」とか、10文字と書いてあるところに沢山文字を打ったら「規定文字数超過です」といった
|
16
|
-
|
16
|
+
エラーメッセージが表示されますよね?
|
17
|
+
これは[「バリデーション(入力値の妥当性検証)」](https://wa3.i-3-i.info/word11610.html)というものになります。
|
17
|
-
|
18
|
+
バリデーションはデータベースに情報を格納する際に、意図しない情報を取り込むのを防ぐための第1関門の役割になっています。
|
18
19
|
|
19
20
|
もちろん、取り込むだけではなく、問い合わせ(要は検索ですね)のときにも、本来、ユーザに提示することを意図しない情報を提示してしまってはいけません。
|
21
|
+
この対策についてはHTMLではなく、HTMLからの入力情報を受け取るサーバー側のプログラミング言語の役割となります。
|
20
|
-
|
22
|
+
(PHPやJavaなど、耳にされたことはあると思います)
|
23
|
+
そのサーバー側のプログラムが、対策を怠っているときに起きるのが、今回懸念されているSQLインジェクションを含めたそれぞれの脅威となります。
|
21
24
|
|
22
|
-
対策についてはHTMLではなく、HTMLからの入力情報を受け取るサーバー側のプログラミング言語の役割となります。
|
23
|
-
(PHPやJavaなど、聞いたことはあると思います)
|
24
|
-
そのサーバー側のプログラムが、対策を怠っているときに起きるのが各脅威となります。
|
25
|
-
|
26
25
|
チェックリストも含めると、下記が参考になります。
|
27
26
|
- [IPA:安全なウェブサイトの作り方](https://www.ipa.go.jp/security/vuln/websecurity.html)
|
28
27
|
|
29
|
-
|
30
28
|
> 肝心の認証ですが、どうやらBasic認証というのがあるらしく、これが簡単そうでした(参考:https://allabout.co.jp/gm/gc/23780/)。しかしこれを試すにはホームページを公開する必要があるそうです(自分のページがWebサーバのどこにあるのかなどの情報が必要と書いてあった→サイトを公開する必要がある?
|
31
29
|
|
32
30
|
既に回答に出ていますが、
|