概要
特集1
体験! 脆弱性の見つけ方&ふさぎ方
Webアプリもスマホアプリも
Webサービスに潜む脆弱性への対策方法を解説する特集です。脆弱性の発見と対策を専門にしているエンジニア陣が,今の現場に即した解説を行います。脆弱性を含んだサンプルのWebアプリケーションとスマートフォンアプリを利用し,脆弱性を突かれると何が起こるのか,そしてどのように対策すればよいかを解説します。頻繁に攻撃対象になる脆弱性を厳選して取り上げていますので,本特集でセキュリティの最新知識を身に付けられるはずです。
特集2
Ruby最前線
[コミッター直伝]新機能の活かし方
2017年12月25日にRuby 2.5がリリースされました。本特集では,Ruby 2.5の新機能の解説を筆頭に,Rubyの最新事情をRuby言語の開発に携わるコミッターの方々自らが解説します。2.5で新しく搭載された新しい書き方,標準添付ライブラリのGem化,パフォーマンス向上,カバレッジ測定機能の強化,データサイエンスのための機能など,実際に実装した開発者だからこそわかるノウハウ満載です。
特集3
今こそ始めるOpenStack
プライベートクラウドの世界標準!
本特集では,OpenStackによるプライベートクラウドの設計,構築,運用について説明します。Amazon WebServiceといったパブリッククラウドに比べ,プライベートクラウドはランニングコストの面で優れています。また,企業のポリシーや制約によってパブリッククラウドが利用できないこともあるでしょう。そんな中OpenStackは,ここ数年で導入事例が増え,プライベートクラウドのデファクトスタンダードとなりつつあります。にもかかわらず,OpenStackの運用に関する情報は多くはありません。そこで本特集では,実例を踏まえながら,運用に関する情報も含め徹底解説していきます。
目次
特集1
体験! 脆弱性の見つけ方&ふさぎ方
Webアプリもスマホアプリも
- 第1章:脆弱性への攻撃を体験する前に
検証用SNSアプリケーション,モバイルアプリの準備……西村 宗晃,杉山 俊春
- 第2章:脆弱性を探す準備
Burp Suiteによる通信解析,dex2jarとJADによるAndroidアプリ解析……杉山 俊春
- 第3章:新規ユーザー登録画面に潜む脆弱性
OSコマンドインジェクション,ディレクトリトラバーサル…………西村 宗晃
- 第4章:ログイン画面とメイン画面に潜む脆弱性
SQLインジェクション,アクセス制御の不備,XSS…………西村 宗晃
- 第5章:スマートフォンアプリに潜む脆弱性
SNS認証の不備,API設計のミス,JWTライブラリの不具合……杉山 俊春
- 第6章:脆弱性を生まないようにするには
要件定義・設計・開発・テスト・運用フェーズに行うべきこと……monii
特集2
Ruby最前線
[コミッター直伝]新機能の活かし方
- 第1章:Rubyの25年を振り返って
誕生から現在までの軌跡とこれから……まつもとゆきひろ
- 第2章:Ruby 2.5での変更点
言語仕様,組込みクラス・モジュール,標準添付ライブラリ……村田 賢太
- 第3章:Gemificationの進化
標準添付ライブラリのgem化で管理の柔軟性向上……柴田 博志
- 第4章:パフォーマンス改善
高速化された機能とその活用法……国分 崇志
- 第5章:カバレッジ測定機能の強化
coverage.soでテストが不足している箇所を特定する……遠藤 侑介
- 第6章:データサイエンスでの活用
Rubyのみでの解析,強力なPythonツールとの連携……村田 賢太
特集3
今こそ始めるOpenStack
プライベートクラウドの世界標準!
- 第1章:なぜOpenStackなのか
インフラ構築の歴史を振り返り意義を考える……常松 伸哉
- 第2章:OpenStackの構築方法
Packstackによる検証環境,Kubernetesによる本番環境……髙石 諒,常松 伸哉
- 第3章:OpenStackの操作方法
コマンドライン,オーケストレーション,Web API……髙石 諒,常松 伸哉
- 第4章:OpenStackの設計と運用
実例から学ぶはまりどころと指針……高谷 雄貴
- 第5章:OpenStackの各種情報
運用の道標となるドキュメント,コミュニティ,イベント……常松 伸哉
連載
- どんとこい! フロントエンド開発
【第5回】Progressive Web Apps ……ネイティブアプリのようなUXを実現する……穴井 宏幸,神野 真彦
- 実践! 先進的インフラ運用 ── 検索してもでてこない,ホスティングの現場で培ったノウハウ
【第5回】一歩先行くコンテナ管理アーキテクチャ ……FastContainerベースのリアクティブなシステムを作る……近藤 宇智朗
- Goに入りては…… ── When In Go...
【第5回】Goのインタフェース定義の考え方……牧 大輔
- Rubyドキドキ調査隊
【第2回】並行・並列処理の注意点 ……threadによる実装,ライブラリの使い分け,Ruby 3での取り組み……桑原 仁雄
- 事業を支えるPHP
【第2回】配列徹底攻略 ……79個もある関数の使い方やハマりどころを厳選紹介!……中西 豪
- Perl Hackers Hub
【第49回】CPANモジュールの品質を支えるCI技術……水音 ぴね
監修:牧 大輔,松木 雅幸,大沢 和宏
- Javaの新定石 ── モダンな技術で現場を加速!
【最終回】Mockitoによるテストダブル入門 ……疑似的な応答の作成,要求の記録,Springとの連携……のざき ひろふみ,うらがみ
コラム
- 継続は力なり ── 大器晩成エンジニアを目指して
【第11回】テックリード……ひげぽん
- 縁の下のUIデザイン ── 少しの工夫で大きな改善!
【第6回】「もっと見る」をちゃんとデザインする……池田 拓司
- はまちちゃんとわかばちゃんのREADER'S FORUM ── 読者のページ
【第54回】……はまちや2,竹原
特別広報
- エンジニアよ,KADOKAWAで世界を目指せ
IP(知的財産)とIT(情報技術)が融合する新プロジェクトが始動!(後編)……編集部
サポート
ダウンロード
特集1「体験! 脆弱性の見つけ方&ふさぎ方」
その他のファイルは執筆者のGitHubアカウントからダウンロードしてください。
利用上の注意
Bad SNSにはさまざまな脆弱性が仕込まれており,SNSの動作する仮想マシンが同一ネットワーク上のほかのマシンから攻撃を受ける恐れがあります。必ず本特集を参考に,安全なネットワーク上で行ってください。Bad SNSを利用して起こったいかなる損害も,著者,ソフトウェアの開発元および提供元,㈱技術評論社は一切の責任を負いかねますので,あらかじめご了承ください。
特集2「Ruby最前線」
特集3「今こそ始めるOpenStack」
連載
- 「どんとこい! フロントエンド開発」で使用されたソースコード
- 「実践! 先進的インフラ運用 ── 検索してもでてこない,ホスティングの現場で培ったノウハウ」で使用されたソースコード
- 「Goに入りては…… ── When In Go...」で使用されたソースコード
- 「Rubyドキドキ調査隊」で使用されたソースコード
- 「事業を支えるPHP」で使用されたソースコード
- 「Perl Hackers Hub」で使用されたソースコード
- 「Javaの新定石 ── モダンな技術で現場を加速!」で使用されたソースコード
正誤表
本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。
(2018年3月13日最終更新)
特集1「体験! 脆弱性の見つけ方&ふさぎ方」
第3章「新規ユーザー登録画面に潜む脆弱性」
P.24 リスト2
誤 |
enc_cookie = CGI::unescape(session_cookie)
|
正 |
enc_cookie = CGI::unescape(enc_cookie)
|
補足情報
特集3「今こそ始めるOpenStack」
第2章「OpenStack の構築方法」
P.85「Packstackのインストール」
(2018年3月15日更新)
2018年2月28日に,OpenStackの新しいバージョンQueensがリリースされました。紙面では,
$ yum install -y https://rdoproject.org/repos/rdo-release.rpm
|
と表記しPikeを利用していましたが,Queensのリリースに伴いPikeのパッケージを直接指定しないと以降の説明通りに手順が進まなくなりました。そのため,
$ yum install -y https://repos.fedorapeople.org/repos/openstack/openstack-pike/rdo-release-pike-1.noarch.rpm
|
としてください。
連載「事業を支えるPHP」
P.132
(2018年3月20日更新)
「すべて配列がコピーされる挙動になります。」と表現しましたが,コピーのタイミングを考慮すると「渡された配列に変更が加えられたときにコピーされる挙動になります。」と表現する方がより適切でした。
PHPではコピー先の配列に対して変更を加えてもコピー元の配列に対して変更は加わらないことの説明を重視していたため,コピーのタイミングに関しては言及していませんでした。PHPではCopy on Write機能によって変更が行われ必要となったタイミングで実際のコピーは行うようにして無駄なメモリコピーを減らしています。そのため,代入した直後にコピーされると読み取れてしまう表現は適切ではありませんでした。上記の通り補足させていただきます。
$array1 = ['hoge' => 'fuga'];
// 配列がコピーされる(Copy on Write)
$array2 = $array1;
// 値の編集が発生する際に実際のコピーは行われメモリを消費する
$array2['hoge'] = 'piyo';
|
メモリ周りについての説明が不十分で誤解を招く表現となっていたことお詫び致します。