Webエンジニアの求人なのに、
— 伊藤 祐策(パソコンの大先生) (@ito_yusaku) 2018年9月11日
・OSI参照モデル知らない
・TCP/IPを知らない
・POSTとGETの違いを説明できない
・SQLインジェクション対策を知らない
・XSSを知らない
・公開鍵暗号を知らない
このくらいの人は普通に応募してくるよ。
このツイート見て、見えっ張りな僕と自己評価の低い僕がせめぎ合いました。
見栄「いやいやさすがに全部わかるっしょ、ねぇ?」
自己「全部完璧に説明できるのかよ、俺には無理だよ説明してみろよさあ」
見栄「……一部調べて回答させていただきます。」
そんなわけで復習を兼ねてこれらのツイートの項目に回答していきます。 各項目の後ろの一言は、最初に頭に浮かんだ言葉です。
OSI参照モデルとは?~7つあるアレ~
OSI(Open Systems Interconnection)参照モデルとは、国際標準化機構(ISO)により策定されたコンピュータなどの通信機器の通信機能を、階層構造に分割したモデルです。*1
言い換えると、ネットワーク通信を相互に行うために制定されたプロトコルです。
OSI参照モデルは以下の7層で成り立っており、各層は互いに独立しています。
階層 | 名前 |
---|---|
第7層 | アプリケーション層 |
第6層 | プレゼンテーション層 |
第5層 | セション層 |
第4層 | トランスポート層 |
第3層 | ネットワーク層 |
第2層 | データリンク層 |
第1層 | 物理層 |
それぞれの説明は長くなるので省略します。
- 参考
- 3 Minutes Networking
- これの4~6
TCP/IPとは?~4層あたりのアレ~
TCP/IPとは、現在のネットワークのデファクトスタンダード・プロトコル*2です。 OSI参照モデルがあくまでモデルであるのに対し、TCP/IPは現在のネットワークで使われている技術の集合です。
TCPはOSI参照モデルで言うところの主に第4層、IPは第3層にあたります。 それぞれどんな仕組みなのかは省略します。*3
POSTとGETの違い~動詞で考えればええ~
どちらもHTTPメソッドの一つです。
『Webを支える技術』では、以下の説明がなされています。
GETは指定したURIの情報を取得します。 POSTの代表的な機能は、あるリソースに対する子リソースの作成です。
Getは冪等であり(何度やっても結果が同じであり)、かつ安全であるが(既存のリソースに変化をもたらさない、すなわち副作用がないが)、POSTは冪等でなく、安全でもないという違いもあります。
SQLインジェクション対策~プレースホルダーでしょ?~
SQLインジェクションとは、主にWebアプリケーションの脆弱性をついて、任意のSQLを実行させることを言います。SQLインジェクションが成功してしまうと、保有しているデータが流出したり、改ざんされてしまったりします。そのためSQLインジェクションを防ぐための対策が絶対に必要になります。
有効な対策の一つには静的プレースホルダーがあります。要するにユーザーの入力を反映させる場所を予め決めておいて、実行されるSQLを想定内のものにする仕組みです。
XSSとは?~クロスをXって表すのかっこいい~
クロス・サイト・スクリプティングと読みます。 いわゆる徳丸本では、以下のように説明されています。
通常、Webアプリケーションには外部からの入力などに応じて表示が変化する箇所があり、この部分のHTML生成の実装に問題があると、クロスサイト・スクリプティング(Cross-Site Scripting)という脆弱性が生じます。
WebアプリケーションにXSSの脆弱性がある場合、クッキー値を盗まれてなりすましの被害にあうといった問題が発生しえます。
サラッと書きましたが被害としては結構重いのでしっかり対策を打つ必要があります。
XSS脆弱性の対策としてあげられているのは、HTMLで特殊な意味を持つ記号文字(メタ文字)をエスケープすることです。
公開鍵暗号とは?~秘密鍵と公開鍵~
暗号とは他人に勝手に自分のファイルを読まれないように変換する手法ですが、暗号化するための「鍵」の種類は大きく2つあります。共通鍵と、公開鍵です。
公開鍵暗号方式では、自分しか持たない秘密鍵と、他人に公開する公開鍵があります。あるファイルを公開鍵で暗号化すると、それは自らが保有するペアの秘密鍵でのみ、復号できます。
公開鍵暗号方式は、暗号鍵をいかに安全に相手に渡すかという鍵配送問題を解決する方法であり、結城浩『暗号技術入門』では
公開鍵暗号は、暗号の歴史における最大の発明であるといえるでしょう。
と述べられています。
同書籍では公開鍵暗号の欠点も2点あげられています。
- 対称暗号と比較して処理が何百倍も遅い
- 公開鍵が信用できるものか判断しなければならない
これらの欠点を克服するための仕組みとして、それぞれハイブリット暗号システム、公開鍵の認証があります。
まとめ
説明足りないなという自覚はありますがこれくらいにさせてください。何も見ずにほぼ書ききったのもあればかなり調べて書いたものもありました。一方、どのトピックスでも「この本を読めば、またはこのサイトを見れば必要なことが書いてある」という状態にはなっていたのでそれは良かったかなと。