第16回プログラミング言語とTDDは、どちらを先にマスターすべきか? 和田卓人 2007-12-21
2016年11月3日にPHPカンファレンス2016が開催されました。本稿では、ゲストスピーカーである徳丸浩さんのセッション「安全なPHPアプリケーションの作り方2016」についてレポートします。 最近のPHP関連の脆弱性 徳丸さんはセッションを通して、PHP関連の脆弱性の話を取り上げていきました。 Joomla!の事例 Joomla!の権限昇格脆弱性についての話がありました。次の2つの問題を含んでいました。 ユーザ登録時に管理者権限を設定されてしまうという問題 ユーザ登録を許可していない設定にしてもユーザ登録が行えてしまうという問題 徳丸さんはこれらのデモを行い、攻撃の流れを見せました。 原因としては登録のメソッドが2つ存在し、そのうちの一方がユーザ登録許可の設定を確認していないことが問題となっていることを指摘しました。対策としては、開発側は該当メソッドの削除、利用者側はバージョンアップを
前回は、Webアプリケーションにおける受動的攻撃の代表例の1つであるXSSについて、原理や対策を振り返りました。今回は、同じく受動的攻撃の代表例であるCSRF、オープンリダイレクト、クリックジャッキングについて掘り下げて解説していきます。 CSRF(クロスサイトリクエストフォージェリ) CSRFはどのように引き起こされるのか CSRFとは、たとえば掲示板の書き込みや設定情報の変更などの機能に対して、攻撃者のサイト上に設置されたフォームなどから強制的にリクエストを発行することで、ユーザーの意図していない操作と同様の結果をもたらす攻撃手法です。Webアプリケーションに永続的な副作用がある機能が攻撃の対象となります。 たとえば、http://example.jp/上に設置された掲示板で以下のようなHTMLがあったとします。 <form method="POST" action="/board">
MySQLを開発に使っている時に、よく問題になるのがアップデート、アップグレードの検証です。アップデート・アップグレードをする前に開発環境で問題が発生しないか、あるいは新機能がどんな機能かを確認したいと思うことがあると思います。その際にうっかり別のバージョンのMySQLで開発環境のMySQLを上書きしてしまい、以前の開発環境に戻せなくなってしまった…なんてことはありませんか? そして、本来やりたかった作業とは別にやることが増えてしまい。面倒くさくなってしまうことが時々あります。 今回はDockerを使って5.6.27と5.7.8の2つのMySQLを、ローカルの開発環境に影響を与えることなく用意してみようと思います。これによってお手軽にMySQLの最新機能を確認したり、アプリケーションへの影響を検証したりできるようになります。 デモンストレーション環境について 今回はDockerでMySQL
はじめに みなさんこんにちは、技術系Q&Aサイトのteratail開発チームの本橋佑介です。 WebサービスでJavaScriptを利用する際にフレームワークを使うことがスタンダードになって来ていますが、運用中のサービスに適用するのはなかなか難しくためらっていませんか。フレームワーク自体の比較ではなく運用中のサービスにフレームワークを適用する際に何を選定すればいいのか、そこにフォーカスをあてて紹介したいと思います。 なぜJavaScriptフレームワークを使うのか 通常Webサービスを作る場合、RubyではRails、PHPではLaravelなどのフレームワークを利用すると思います。MVCモデルを導入する目的としてビジネスロジックや画面描画などの分離、コンポーネント化ももちろんですが、チーム開発をする上ではコーディングルールの統一や部品の統一化、画面の切り離しによりフロントエンドエンジニア
はじめに 前回は、本連載の目的や、本連載で扱う並列データ処理の定義について説明しました。今回は、並列データ処理系の歴史や重要性について見ていきます。技術を学ぶうえで、その技術の歴史や重要性について理解しておくことはとても良いことですので、かんたんな読み物を読むつもりでお付き合いください。 並列データ処理系の進展 並列データ処理系における基本的なアルゴリズムや処理方式は、並列データベースと称される並列化された[1]データベースシステムにおける技術に基づいています。 並列データベースに関する研究・開発は、1970年代からの並列データベースマシン(Parallel Database Machine)[1、2、3]と称されるデータベース処理専用の並列計算機に遡ることができます。並列データベースマシンは、データ処理用途にカスタマイズされたプロセッサや記憶装置を用いていたため、必ずしも価格に見合った
はじめに ビッグデータ解析のためのシステム基盤として、Hadoopをはじめとするオープンソースのデータ処理ソフトウェア(データ処理系)が広く利用されつつありますが、当該データ処理系をすでに利用している、もしくは利用の検討をしている読者の方々の中には、たとえば以下のような問題を抱えている方が少なからずいらっしゃるのではないでしょうか。 データ処理系の使い方はなんとなくわかるが、その内部をあまり理解できていない。または、内部の動作原理がよくわからないので、本格的に使う気にならない。 同様の目的を達成する複数のデータ処理系において、どれを使って良いかがよくわからない。または、適切に使い分けられていない気がする。たとえば、どのような場合にHadoopを用いて、どのような場合に同類のデータ処理系であるImpalaやSparkを用いれば良いかが“明確に”わからない。 このような問題を解決するには、
Raspberry Pi 2をサーバーとして動かすとなると、やはりコンテナ型仮想化を使えると便利です。そこで今回はRaspberry Pi 2上でDockerを使う方法を紹介します。 よりUbuntuらしいインストールイメージ 先月の第362回では、Raspberry Pi 2にUbuntuをインストールする方法として、Snappyのカーネルやinitramfsと、Ubuntu Coreのルートファイルシステムを組み合わせて使う方法を紹介しました。この方法は手元でカーネルやinitramfsのビルドは必要ないものの、カーネルのアップグレードは手作業でbootパーティションを変更しなくてはいけない、カーネルのコンフィグがUbuntuのそれと微妙に異なるなど、いろいろと不便な点も存在していました。 そんな中、この記事と前後してCanonicalのRyan FinnieがRaspberry Pi
連載のはじめに みなさんこんにちは、今回より「聞いたら一生の宝、プログラミングの基礎の基礎」 の連載を担当させていただく本橋佑介です。 本記事では、広く利用されている技術から新しい技術まで、基本的な部分を現場のエンジニアの声を取り上げつつ解説していきます。習得している方にとっては振り返りとなり、また今から学ぶ方にとっては同じ疑問にぶつかった方の意見が参考になれば幸いです。 現場のエンジニアの声は私が開発に携わっている技術系QAサイトteratailから抜粋しています。 第1回では、現在では様々な環境で利用されているJavaScriptの基礎をteratailの初心者投稿とともに振り返っていきます。 JavaScript JavaScriptは主にウェブブラウザを実行環境とし、動的なウェブサイト構築などに利用されてきました。 また、今ではNode.jsをサーバサイドで利用することが増え、
はじめに 昨年のWWDCにて、AppleはiOS8やOS X Yosemiteの発表とともに、新しいプログラミング言語「Swift」を発表しました。まさか新しい言語を開発するとは思いもよらず非常に衝撃的な発表でしたが、あれから半年が経ち、開発者向けベータ版などを経て、仕様やツールもだいぶ落ち着いてきたように思います。そろそろSwiftを、という方も多いのではないでしょうか。 本連載では、すでにObjective-CでiOSアプリを開発している開発者に、Swiftへ移行する際のポイントを解説したいと思います。 第1回である今回は、Swiftを学ぶための情報源と、Playgroundについてご紹介します。 その前に自己紹介 はじめまして。ogaoga(@ogaoga)と言います。仕事ではIT系の会社でフロントエンドエンジニアをやっています。iOSアプリは趣味で開発していて、SDKが公開されてか
本連載では、現在MySQLを利用していて、チューニングやより大規模な環境に向けた構成の拡張を体系的に説明することを目的としています。MySQLのこれまでの開発と最新の動向から、チューニングやスケールアップ/スケールアウトの注意点を解説します。 第1回である今回は、MySQLのアーキテクチャをこれまでの開発の歴史と併せて解説します。 黎明期 MySQLの最初期のバージョンは1994年に開発され、1995年に公開されています。公開当初は独自のライセンスを採用していましたが、2000年にGPL v2を採用し、商用ライセンスとのデュアルライセンスモデルを採用しました。また、MySQLの代表的な機能の1つでもあるレプリケーションも2000年に実装されており、Webシステムとの相性の良さや構成の柔軟さから数多くのWebシステムで以前からMySQLが採用される理由にもなっています。 2001年にGA(G
本日12月1日より、プログラマ有志による2014年の技術系Advent Calendarが各所ではじまる 本日12月1日より、プログラマ有志による2014年の各技術系Advent Calendar(アドベントカレンダー)が一日目を担当する人のblogではじまっている。技術系Advent Calendarの数の増加傾向は今年も続いており、Qiitaを利用したものがとても多くなっている。 一般的なAdvent Calendarは、12月25日のクリスマスを楽しみに待つために、12月1日から24日までのカレンダーの日付それぞれの部分が扉になっており、1日ずつその日の日付の部分を開くと天使や動物の絵などが見えるという仕組みになっている(もちろん、様々なバリエーションがある)。 これに発想をえて、技術系Advent Calendarでは基本的に、12月1日から25日までの25日間、特定のプログラ
10月に入り、9月までに起こったことをざっと振り返るというお題がどこかから聞こえてきたので、「じゃあ……」という感じで振り返ってみることとします。 わずか1週間程度でBashが大幅な進化を遂げた ~Shellshock大暴れ~ まだ現在進行形の事案ではありますが、9月下旬に発覚したBashの脆弱性に起因して、10月上旬までまだ収束していないShellshock。 Bash 4.3の例で説明すると、Patchlevel 25~30までは以下のような軌跡をたどっています。 9月24日にPatchlevel 25 9月26日にPatchlevel 26 9月27日にPatchlevel 27 10月1日にPatchlevel 28 10月2日にPatchlevel 29 10月5日にPatchlevel 30 この間に発見、修正された脆弱性は、CVE-2014-6271、CVE-2014-71
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回は普段Webアプリケーションの開発を行っているtokuhiromさんで、テーマはWebアプリケーションフレームワークAmon2です。 Amon2とは? こんにちは。tokuhiromです。本稿では、筆者が中心となって開発を進めているAmon2というWebアプリケーションフレームワークについて説明します。 Amon2は、次のような特徴を持つWebアプリケーションフレームワークです。 PSGI/Plackベース Amon2はHTTP::Engine/PSGI/Plackの開発/制定に初期のころから関わっている筆者が作成したWebアプリケーションフレームワークです。そのため、Plackの部品をできる限り利用することにより、少ないコードベースでWebアプリケーションフレームワークを実現しています。これにより学習コストが低くなってい
第3回underscore.jsの関数とユーティリティとChaining 早瀬まこと 2014-01-24
本日12月1日より、プログラマ有志による各技術系Advent Calendarが一日目を担当する人のblogではじまっている。ここ数年は、師走の風物詩になっている。 一般的なAdvent Calendarは、12月25日のクリスマスを楽しみに待つために、12月1日から24日までのカレンダーの日付の部分(扉だったりする)がめくられるようになっており、1日ずつその日の日付の部分をめくると天使や動物の絵などが見えるという仕組み(もちろん、様々なバリエーションがある)。 これに発想をえて、技術系Advent Calendarでは基本的に、12月1日から25日までの25日間、プログラミング言語縛りなどの最低限のルールで、毎日別の人(同じ人が複数回担当することもある)が自分のblogにて記事を書くという形式になっている(特設サイトを用意して、記事をまとめる手法もある)。なお、国内ではATNDの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く