大変お世話になっております。
反逆する武士
uematu tubasaです。
初回投稿日時:2022年12月29日(令和4年12月29日)
本日はWeb系システム開発を行う上での基本知識をまとめた記事になります。
情報の正確性に関しては考慮しておりますが、誤っていたら、ご指摘願います。
また、この記事で取り扱うトピックスは完全なる独断と偏見です。
Webシステムとは要求と応答の繰り返し
HTTPではほかのクライアント/サーバーシステムと同時に、クライアントであるWebブラウザが要求を送り、サーバーであるWebサーバーがその要求に対して応答を返すといった単純なやりとりを繰り返すことで、Webサイトの閲覧を可能としています。
引用元:イラスト図解式 この一冊で全部わかるWeb技術の基本pp50より
私のようなポンコツITエンジニアですと、上記のようなことも理解できなかった時期がございました。
要求(リクエスト)と応答(レスポンス)が繰り返されて、Webサイトを閲覧することができます。
現実のシステム開発現場においては、リクエストとかレスポンスという単語が飛び交います。
したがって、ポンコツITエンジニアはそこで面食らうわけですよ。
なぜ英語が飛び交っているのかと疑問に思うわけです。
クライアント(一般的にはPCやスマホなどの端末)からリクエストがWebサーバーに送られます。
そのWebサーバーからレスポンスがあって、クライアントにデータが送られ、ブラウザで表示されます。
それの繰り返しなのですよね。
まずはその基本を押さえている『イラスト図解式 この一冊で全部わかるWeb技術の基本』はなかなかの良書と言えます。
地味に理解するべきHTTPメソッド
HTTPリクエストを用いてWebサーバーに具体的な要求内容を伝えているのは、HTTPリクエスト内に含まれる「HTTPメソッド」です。
引用元:イラスト図解式 この一冊で全部わかるWeb技術の基本pp54より
HTTPメソッドは目的別に複数定義されており、例えばHTMLファイルなどコンテンツを取得したい場合は「GET」メソッド、データをWebサーバーに対して送信する場合は「POST」メソッドが利用されます。
クライアントからのサーバーに対する要求(リクエスト)は、リクエスト内に含まれる「HTTPメソッド」で具体的になります。
基本は「GET」メソッドと「POST」メソッドになります。
例えば「GET」メソッドは、画像などを表示させたい場合に利用します。
また「POST」メソッドは、データ登録(会員登録時の名前や電話番号など)をサーバー側に送りたい場合に利用します。
「GET」メソッドと「POST」メソッド以外にもございまして、以下にまとめました。
「HEAD」メソッド:HTTPヘッダーの情報のみを取得するHTTPメソッド。
※データの更新日時やデータのサイズのみを取得したい場合に利用する。
「PUT」メソッド:データファイルをアップロードする場合に利用する。
※Webサーバー上のファイルを置き換えることができるため、利用できないように制限されている場合が多い。
「DELETE」メソッド:指定したデータファイルを削除する場合に利用する。
※PUTメソッド同様に利用できないように制限されている場合が多い。
「CONNECT」メソッド:Webサーバーに接続するまでに別のサーバーを中継する場合に利用する。
※CONNECTメソッドを悪用した攻撃があるため、利用を制限されている場合が多い。
「OPTIONS」メソッド:利用できるHTTPメソッドを問い合わせる場合に利用する。
※利用を制限されているHTTPメソッドがあるため、事前に機能を確認する際に利用される。
「TRACE」メソッド:WebブラウザとWebサーバーの経路をチェックする場合に利用する。
※TRACEメソッドを悪用した攻撃があるため、利用を制限されている場合が多い。
ソースコードの勉強をする場合、既存のソースコードが存在する場合は上記を念頭に置いて確認する必要があります。
システム開発で面倒なセッションという概念
WebブラウザとWebサーバーのやりとりにおいて、一連の関連性のある処理の流れを「セッション」と呼びます。
引用元:イラスト図解式 この一冊で全部わかるWeb技術の基本pp76より
例えば、ショッピングサイトで商品を買う場合の「商品を選ぶ」「商品を買い物かごに入れる」「買い物かごの中身を確認する」「商品を購入する」といった処理の流れがセッションになります。
例えば、Amazonサイトがございます。
ほとんどの日本国民がご存知のショッピングサイトです。
そのようなサイトでも上記の「セッション」というのがございます。
ユーザーが操作することに伴う処理の流れなのですが、これから逸脱した場合も考慮しなければなりません。
例えば、FireFoxでとある操作途中で、ブラウザを変えてAmazonサイトにログインし直して商品購入した場合を考えてみましょう。
FireFoxでとある商品を買い物かごに入れた状態で、Googlechromeで商品を購入した後、すぐにFireFoxで商品を購入するボタンを押下したらどうなるでしょうか。
セッションを考慮しないと、すでに購入した商品を再度購入することになってしまいます。
したがって、これをどうにかして防ぐ必要があります。
どのような方針や方法で未然に防ぐのかってことを事前に取り決めておかないと駄目なのですよ。
結論を言えば「セッションID」で識別することで、上記のような問題は未然に防ぐことができます。
詳細に関しては『イラスト図解式 この一冊で全部わかるWeb技術の基本』をご購入ください。
とても分かりやすく対処策のヒントが掲載されてます。
最後に総合評価
私のようなポンコツITエンジニアだけでなく、初級ITエンジニアは読むべき本だと思いました。
基本的な用語を説明している箇所も多いです。
サイバー攻撃の種類やプログラミング言語についても説明されております。
文句なしにお勧めできるITエンジニア入門書です。
以上です。