サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
s8a.jp
Webアプリケーションのセキュリティを考える上で、やはり最も重要視すべきなのが、認証の部分でしょう。いくら脆弱性の含まない、完全なWebアプリだったとしても、IDとパスワードが流出してしまったら、全く意味がありません。 近年、推測可能なパスワードを使ってしまい、また、そのIDとパスワードを使い回してしまい、芋づる式に様々なサービスの不正アクセスを許してしまう事件が後を絶ちません。 たとえ「簡単なパスワードにしない」「パスワードを使いまわさない」など心がけていたとしても、ブルートフォースアタック(総当たり攻撃)によって不正アクセスされてしまう可能性はゼロではありません。特に大量の個人情報や機密情報を扱うWebアプリケーションの場合、不正アクセスのリスクは莫大です。 そこで、ブルートフォースアタックによる不正アクセスの可能性を限りなくゼロに近づけることができる2段階認証(2要素認証)が、近年で
2017年1月下旬頃から、当ブログをシングルページアプリケーション(SPA)としてリニューアル・公開開始しました。 公開してからある程度時間が経ち、SPAにした成果が見え始めてきているので、ここで一つ、実際のところSPAにしてどのように変化したかを振り返ってみます。 シングルページアプリケーション(SPA)とはSPA(Single-page application)は、単一ページアプリケーションとも呼ばれ、最初にページを読み込んで以降は画面遷移を全てAjax(非同期通信)で再現し、JavaScriptで従来のページ移動をエミュレートしているWebサイト・Webアプリケーションのことです。 通常のWebページでは、リンクをクリックして画面遷移をすると、ページを丸ごと読み直します。しかし、SPAでは画面遷移ごとにページを読み込み直すことをせず、Ajaxでデータをサーバーから取得し、ブラウザ上で
今回は、コーディングスタイルに関する話です。 皆さんはプログラミングするときに、そのプログラムのインデントスタイル(字下げスタイル)は、どのようにしてますでしょうか。プロジェクトや言語ごとに異なることが多いコーディングスタイルの一つである、インデントスタイルについて、今回は考えてみます。 インデントスタイルとはまず初めに、インデントスタイルとは何ぞやという方向けに簡単に説明しておきます。Wikipediaには、下記のような説明があります。 字下げスタイルまたはインデントスタイル(英: Indent style)とは、プログラミングにおいてプログラムの構造を明らかにするために、コードのブロックの字下げをどうするかを決めたものである。(中略)字下げスタイルはプログラミング作法の一部である。 まあ、よくあるプログラムの行頭の空白のスタイル・ルールのことです。例えば、以下の2行目・3行目・4行目の
皆さんは普段、PCを使う上で、フォントは気にしますでしょうか。 最近は、Webフォントの登場によって、Webサイトごとに独自のフォントが表示されているのを見る機会も多くなりました。 しかしながら、Webや画像制作等の経験がない方は、あまりフォントをインストールする機会もないかもしれません。 そこで今回は、プログラマー向けに、普段使う開発環境等に導入したら良さそうな、オープンソースのフォント「Fira Code」を紹介したいと思います。 Fira Codeは、プログラミング用・コーディング用フォントで、リガチャー(合字)により、関係演算子(比較演算子)や論理演算子、アローファンクションなどを見やすくしてくれる等幅フォントです。様々なプログラミング言語に対応できるように設計・工夫されています。 具体的には以下のように変換してくれますが、リガチャーになっても表示幅は同じで、文字自体が変化している
何かと近年、ビジネス上のやりとりに、ChatWorkを使う機会が増えてきています。 使っている方ならわかると思いますが、このChatWork、たまにサーバーがダウンしたり、そこまでいかなくても繋がりにくくなったりといったことが、まああります(数ヶ月に1度くらい)。それで業務上、致命的なダメージを受けたことはありませんが、そのときに行っていた業務が遅延したことは何度かあります。 先日たまたまChatWorkのプラン一覧を見直したところ、昔はなかった(違う名前だった?)エンタープライズプランなるものが追加されており、そのプランの特典の一つにSLA(サービス品質保証)がありました。 SLAは、簡単に言えば、「1ヶ月で特定の時間以上サービス停止したら、いくらか返金するよ!」という制度のことです。 常日頃からChatWorkは落ちることがままあるサービスだという認識だったので、これはもしかしたら導入
SSHの鍵管理とその配布、皆さんはどのようにやってますでしょうか。 これまでの経験上、SSHキーの運用方法は、各企業やユーザーの風土・文化によって異なっていました。1つのキーを全てのサーバー・ユーザーで使い回す企業もあれば、各サーバーごとにキーを用意して使い回すとこもあり、中にはずさんな管理をしているところも少なくないと思います。 ずさんな管理をしてしまう原因、それは「ちゃんとした管理・運用は面倒くさい」というイメージからだと思います。 しかし、きちんと手順さえ構築してしまえば、そんなに難しいことではないので、ここで一つ、私の普段やっている手法をまとめてみたいと思います。 最も一般的でかつ安全な運用方法通常、SSHでは、接続したいサーバー側に公開鍵、接続するクライアント(自分のPC)に秘密鍵を配置して接続します。 秘密鍵と公開鍵のペアを作成後、公開鍵を接続したいサーバーの~/.ssh/au
近年、Web業界の発展により、UI/UXの優れたWebサイトやWebアプリケーションが登場してきています。 そして、それに合わせ、フロントエンドの技術が進歩し、UIを構築するのに優れたライブラリやフレームワークが多く登場してきています。 周りがどんどん進化しているのに、まだjQueryで頑張っちゃってるなんてこと、まさかないですよね? もしもまだあなたが、JavaScriptにおいてjQueryしか使ったことがないのであれば、jQueryで消耗してるとしか言いようがありません。 Vue.js(JavaScriptフレームワーク)とは 私はこれまで、AngularJS(Angular)やReact.js、knockout.jsなどといったJavaScriptフレームワークを利用してきましたが、中でもVue.jsは、とにかく全ての人たちにオススメできるJavaScriptフレームワークであり、
今回の標的は、生産性の低いクソITエンジニアです。 これから述べることは、あくまで私の考える一説なので、エンジニアの皆さんは気を悪くしないようにお願いします。気を悪くしちゃった場合は、Twitterでボコボコに叩いてください。タイトルが若干誇大表現なのは、認めます。 優秀なエンジニアとそうでないエンジニアの違い一言に「有能」「無能」といっても、様々な要因がありますし、人それぞれの価値観によっても変わってくるかと思います。 ただ、一般的に共通して言えることとして、「有能」でいえば、以下のような要因があるかと思います。 コードを書くのが早い(頭の回転が早い)設計が綺麗(拡張性/将来を見通せる)バグが少ない(ミスが少ない/リスク回避が的確)技術の知識が広い/深い(視野が広い)的確にチーム内の情報共有ができる(コミュニケーション能力が高い)など。「無能」は、この逆ですね。 今回は、上記の5つを「有
WordPressのジョブの定期実行(一定時間ごとの処理)の仕組みは、デフォルトではwp-cron(擬似cron)と呼ばれる方法を利用しています。これは、Webアクセスをトリガーとし、現在実行すべき処理がないかどうかをその都度確認するものです。 しかし、これではジョブの定期実行により呼ばれる"予約投稿"が、時間を過ぎても次のWebアクセスが来るまで投稿されません。これは、記事投稿時に自動でメール配信やSNS配信をしている場合には、告知の遅延の元となってしまいます。また、アクセスの多いサイトであればオーバーヘッドも気になります。 そこで、リアルタイムに処理する必要がある場合には、wp-cronからサーバー側の通常のcronに移行するのが普通ですが、Webで検索すると各サイトで設定方法が異なり、一部無駄が多い設定になっている場合があるので、ここで私自身が思う最適な設定方法について、ご紹介したい
他にもいろいろなタグ(@paramや@returnのようなもの)がありますが、あまり多すぎてもチーム内での共有が難しくなるので、私のチームでは最低限このタグだけで運用しています。どうしてもその他のタグが必要な場合は、都度プロジェクトごとに決定しています。 他のタグの情報はこちらに記載してありますので、参考にどうぞ。 IntelliJ IDEAの場合は、PHPプラグインを入れる当然ですが、phpDocumentorはPHPのための機能です。IntelliJ IDEAではデフォルトでPHPプラグインが含まれていないため、インストールしてください。 [Preferences]→[Plugins]→[Install JetBrains plugin]→[PHP]で検索して[Install]。インストール完了後は、IDEAを再起動してください。 phpDocumentorを使って実装するでは、早速実
※ 最新のAWS環境(LambdaのNode.js 4.3対応)に対応した形で記事を書き直しました。最新の記事はこちらからどうぞ。 本記事投稿日現在、AWSのセキュリティグループの受信許可設定には、IPアドレスの指定および他のセキュリティグループのID指定しか対応していません。つまり、CloudFront経由でしかアクセスさせたくない場合であっても、そのような設定をすることは、現時点ではできません。 そこで今回、CloudFrontのIPアドレス範囲に変更があったとき、自動でセキュリティグループを設定してくれる仕組みを考えました。 前回や前々回の記事では、EC2のサーバー上から定期的に変更確認を行い、変更があったときにセキュリティグループの修正を行うシェルスクリプトをご紹介しましたが、今回はAWSのLambda / SNS / S3を使ってサーバーレスで実装したいと思います。 また、今回の
PHPにおける基本的なセキュリティ対策の方法について、備忘録としてまとめます。 PHPでこれからWebアプリケーションやWebサイトを作成しようと考えている方は、各項目について対策は万全か、是非一度ご確認ください。 本記事(前編)では、以下に関する脆弱性について取り扱います。 SQLインジェクションOSコマンドインジェクションディレクトリトラバーサルセッション管理の不備クロスサイトスクリプティング(XSS)以下の脆弱性については、後編の記事をご覧ください。 クロスサイトリクエストフォージェリ(CSRF)HTTPヘッダインジェクションメールヘッダインジェクションクリックジャッキング参考サイト安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構 SQLインジェクションユーザーによるSQLの不正実行が可能な状態となっている、「SQLインジェクションの脆弱性」を淘汰するために、PHP
近年、様々なクラウドサービスの出現により、社内システムは変革の時期を迎えています。 これまではセキュリティの観点から、機密データを扱うサーバは社外には出すべきではないとされていました。しかし、現在では多くのクラウドインフラストラクチャーで、オンプレミス環境に劣らないセキュリティが担保できることを証明する第三者機関認証を取得していることから、セキュリティの懸念も解消されつつあるといえます。 実際に、現在ではクラウドサービスを全く利用していない企業の方が少ないのではないでしょうか。 このような時代の流れもあり、これまで私は勤めている会社の経営陣に対し、様々なクラウドサービス導入の提案をし、社内システムの改善を図ってきました。その中でもchatworkの導入は、特に評価を受けたサービスの1つです。 しかしながら、1度提案をして利用を開始することになったものの、残念ながら実運用には至らなかったクラ
このブログをHTTPS化すると同時に、ブログ内で使用しているAmazonアソシエイトのバナー広告が全て表示されなくなるという事態が発生しました。備忘録として書き残しておきます。 現象以下のようなAmazonアソシエイトのバナー広告が、全く表示されず、ただの空白となってしまっていました。 <iframe src="http://rcm-fe.amazon-adsystem.com/e/cm?t=s8a-22&o=9&p=8&l=as1&asins=B0012Z1OWU&ref=tf_til&fc1=000000&IS2=1<1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&npa=1&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" margi
これまで、エンジニアに全く好かれないそうそうたる会社たちを見てきました。エンジニアに好かれず、すぐに辞められてしまうIT企業というものは、どんなに安定的な収益源・顧客を抱えていても、事業そのものが安定することはありません。 事業を継続するのには、相当な労力が必要です。システムを作って納品してはい、終わり!で済むほどプロジェクトというものは甘くはないのです。大概、開発した当初想定しえなかった工数というものが発生したり、保守コストが大量にかかったりするものです。 そんな最中、社内でエンジニアの急な退職に起因したトラブルが発生し、その対応を強いられたエンジニアまでもが嫌気がさし退職してしまう。また、エンジニアの退職というものを身近に体験し、しかもそのエンジニアが退職後に成功している話を聞き、自らも退職したくなってしまう。そういった負のスパイラルが、魅力の少ないIT企業には起こりがちです。 今回は
どうも。 Webアプリケーションの価値を高める要素の一つに、UI(ユーザーインターフェース)の使いやすさというものがあります。UIとは、人間とコンピュータの間での情報をやりとりするためのインターフェースのことで、Webアプリケーションでいえばブラウザに表示される画面になります。 今回はその、Webアプリケーションの顔とも言える「UI」の使いやすさについて、勘違いしている人が非常に多いので、記事にします。 使いやすいUIなど、主観でしかないまず前提として、「使いやすい」「使いやすくない」というのは、個人の主観です。あなたが使いやすいと思おうが、顧客が使いやすいと言おうが、それは決して信用してはなりません。中には使いやすくないと思う人が必ずいますし、使いやすいという意見そのものに信憑性はありません。 なぜなら、利用者はそのUIが優れているのかどうかについて、判断することは不可能だから、です。
備忘録としてApacheのパフォーマンスチューニングを簡潔に羅列していきます。ちゃんとチューニングができているかの確認用(チェックリスト)なので、設定方法や動作等詳しく知りたい人は、改めてググってください。 Apacheのセキュリティ対策については、こちらにまとめてありますので、よろしければどうぞ。 Keep Aliveの設定KeepAlive「ON」にすることで、Keep Aliveが有効になり、同一クライアントに対してTCPコネクションを使いまわすことができるようになります。 デフォルトでONなので、通常は特に設定する必要はないです。 httpd.conf等に下記を記述します。 MaxKeepAliveRequests1つのKeep Aliveで受け付けるリクエストの数を指定します。目安として、「Webページ1つ当たりの平均的なコンテンツ数+α」に設定します。デフォルト値は「100」で
備忘録としてApacheのセキュリティ対策を簡潔に羅列していきます。ちゃんと対策ができているかの確認用(チェックリスト)なので、設定方法や動作等詳しく知りたい人は、改めてググってください。 Apacheのパフォーマンスチューニングについては、こちらにまとめてありますので、よろしければどうぞ。 サーバー情報の隠蔽ApacheやPHPのバージョン情報の公開は、脆弱性を突いた攻撃の温床となる場合があるため、控えましょう。 ヘッダーフィールドの隠蔽httpd.conf等に下記を記述します。
※ 本記事の改良版を後日作成しました! 改良版の記事はこちらからどうぞ。 こちらの記事にもあるとおり、当ブログはAWS上で稼働しており、なおかつCloudFront経由で配信しています。 本記事投稿日現在、AWSのセキュリティグループの受信許可設定には、IPアドレスの指定および他のセキュリティグループのID指定しか対応していません。つまり、CloudFront経由でしかアクセスさせたくない場合であっても、そのような設定をすることは、現時点ではできません。 そこで今回、定期的に自動でCloudFrontのIPアドレスを調べ、セキュリティグループを設定してくれるシェルスクリプトを作成しました。 本スクリプトのメリットこのスクリプトを利用することにより、WebサーバへのアクセスがCloudFrontからのみに絞られるため、外部からWebサーバ本体(EC2)のIPアドレスを特定することが困難となり
REST APIにアクセスする際に、ブラウザがAPIサーバに対してHTTP(もしくはHTTPS)のOPTIONSメソッドでリクエストを投げることがあります。 本記事では、その現象の解説と、Node.jsでAPIサーバを実装している場合のOPTIONSメソッドへの対応法を記述します。 HTTPのOPTIONSメソッドとはHTTPで一般に使われるメソッドといえば、GETやPOSTですね。REST APIを頻繁に利用する人ならば、PUTやDELETEも利用したことがあるでしょう。サーバのテストのためにHEADメソッドを利用したことがある人もいるかもしれません。 OPTIONSメソッドは、これらのメソッドのうち、サーバがどのメソッドをサポートしているかを調査するためのメソッドです。 昨今のブラウザでは、フロントエンドJavaScriptから違うドメインへのアクセスに対して、Cross-Origin
今回は、AWSのAmazon EC2(Amazon Linux)上に、オープンソースのアンチウイルスソフトである、ClamAVの導入方法を解説します。 ネット上にいくらか資料がありますが、単純にそれだけでは実現できないこともあったので、備忘録として残します。 ClamAVのインストールまず、yumコマンドでインストールします。以前まではリポジトリを指定しなければならなかったようですが、現在は特に指定することなく導入できます。
先日10月1日未明に、Macintoshの新しいOS「OS X 10.11 El Capitan」がリリースされました。 その「OS X El Capitan」にインストールされている「Safari 9」では、よく使うタブを固定する「ページピン」機能が追加されています。 この機能により、上の画像のように、よく見るサイトを常に固定しておくことができるため、非常に便利です。 ただ、ここに表示されるアイコンですが、実はファビコン(favicon.ico)を単に表示しているわけではなく、サイト側で新たに画像を設置し、コンテンツを設定しないと表示されないようになっています。 今回はその方法を解説します。 アイコン画像の用意まず始めに、使う画像を用意するわけですが、ここに設定する画像はSVG形式のもののみ可能となっています。SVGは、ベクターイメージの画像形式で、こちらに詳しい説明があります。 なので
どうも。 今日はブログラマはプログラムを書くべきではない、という一見矛盾した私のポリシーについて記していきます。 プログラムは量より質言わずもがなですが、プログラムは当然、「量」よりも「質」が重要視されるものです。長きにわたり保守されていくのが普通ですから、長期間の利用にも耐えうる、運用を考慮した設計にすることは非常に重要です。そこに開発工数を多くかけたとしても、きちんと設計できていれば後々保守コストが大幅に削減されるため、結果的に全体の工数を抑えることができます。また、納品物も拡張性の優れたコードにすることができます。 「量」、すなわちシステムで言うところの「機能」を多くし、様々な顧客の要望に応えることも重要ではありますが、「質」があってこそのものです。「質」が著しく低下している状況のシステムに、さらなる機能追加を行い「量」を増やす行為は、後々の拡張性を捨てる行為に等しく、保守をより困難
今の時代、仮想化技術の発展・クラウドコンピューティングの普及により、Webデザイナー・プログラマーとサーバーエンジニアの区分が曖昧になってきていて、デザイナーやプログラマーもWebサーバー(apache/httpd)に対して目を瞑っていられる時代じゃなくなってきました。 今回は、ノンサーバーエンジニア向けに、Webサーバーの負荷テストによる、サーバーのボトルネックや問題発生原因の究明の仕方を紐解いていきます。 サーバーの構成要素Webサーバーのボトルネック(処理速度低下の原因や障害発生の原因)を究明していく上で、最低限、ボトルネックとなりうる要素は知っておかなければなりません。サーバーは簡単に、以下の要素が互いに機能しあって動いています。 CPUメモリーハードディスクネットワークそれぞれの役割は後述します。 上のうちの1つでも機能しなくなると、WebサーバーはWebサービスを提供できなくな
Angularで作成したフロントエンドのWebアプリを、GitHub上で管理して、masterブランチにコミットされた変更を自動でAmazon S3にデプロイ(適用)させる方法を解説します。本記事では、S3をCloudFront経由でインターネット上へ公開し、名前解決をRoute 53で行… Vue CLIでは、デフォルトでパッケージマネージャーにYarnを使用します。ですが、開発環境や本番環境でのミドルウェアの制限等により、Yarnではなくnpmで管理したいプロジェクトもあるかと思います。そんなとき、Vue CLIでどのようにプロジェクトを作成すれば… Create React Appでは、デフォルトでパッケージマネージャーにYarnを使用します。ですが、開発環境や本番環境でのミドルウェアの制限等により、Yarnではなくnpmで管理したいプロジェクトもあるかと思います。そんなとき、Cre
厳密には2015年1月末までなので、まだSIerの会社にいるのですが。 前置き2015年1月末を以て、SIer(として)の(面もある)現会社を退職します。 SIer以外の業務で若い人材を低賃金・重労働で消耗していく、超ブラックな部分のある会社だったってことはこの際なしにして、SIerで勤めている上で思うことがいくらかあったので、書き残します。 もしかしたらSIer全般ではなく、今回の件にだけ当てはまることを書くかも知れませんが、あしからず。 SIerって?具体的な話に入る前に、念のためSIerとは何か、一体SIerとして今までどんな仕事をしてきたのかを説明します。 SIerは「エスアイアー」と読み、システムインテグレーターの略語だとされています。 システムインテグレーター(英: System Integrator、通称:SIer)は、個別のサブシステムを集めて1つにまとめ上げ、それぞれの機
このページを最初にブックマークしてみませんか?
『ある蜜柑の上にアルミ缶。』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く