「仕様書」を含む日記 RSS

はてなキーワード: 仕様書とは

2016-08-25

業務ソフトウェア仕様書設計書と呼ぶけど

どっちかっつーと説明書だと思う

プログラム作った後で、どう作ったか説明するもの

客が欲しいものは動くプログラムでありソフトウェアであって

説明書はおまけ

2016-08-23

僕は仕事ができない

10年ほど働いてるが、つくづく仕事ができない。

経理的な知識感覚がない

売上-原価=利益程度は理解できるが、逆に言うとそれぐらいしか理解できない。同時に金銭的な感覚を全く持てず、部の予算が幾らなのか、どのぐらいの売上があるのか、といったことを何度覚えても覚えられない。金銭的な感覚がないか見積を作るときもよくわからず、人月に換算したら高すぎるといった指摘を受けてしまう。1人月が幾らかすら知らない。

技術的な知識もない

手順書に書かれていることを実施する程度の上っ面の知識はあるが、それ以上のことは知らない。マニュアル仕様書を見れば良いのだろうが、何度見ても理解できないし覚えられない。

仕事に興味がもてない

世間的にはいわゆる大企業というやつらしく、社員仕事実行部隊である請負の人が仕事をし易くすること。つまり仕事を持ってくる、請負の人に発注を出す、終わったら検収を上げるといった事務処理が主。最初に書いた通り、経理会計的な知識が無く、そもそも数字に弱いので苦痛で仕方がない。何度チェックしても小さなミスを繰り返す。

入社~7年ほどは、出向先や本社現場作業作業リーダー的な仕事でそれなりに仕事は出来ていたと思う。だけど今の部署地方)に異動になってからは、上述のような仕事が主になってしまい全く興味が持てなくなった。


全く向いてないことはよくわかってるけど、今以上に給与の良いところへ転職できる見込みは皆無だからしがみついてる。でも、何度教えても直る見込みのない自分はそろそろ上司にも見捨てられるのかも知れない。見捨てられたらどうなるんだろう。

2016-08-18

年収を上げたいなら、webを出ている場合ではない。

なんかイラッとしたので反論したい。

ちなみに年収主題かもしれないが、

言っていることも矛盾が気になった。

あと、自分匿名感情的な指摘なので、支離滅裂していることは最初に謝っておきます

やはり、web世界にいるだけじゃダメですね

どの会社web仕事はしていても、お客さんはweb世界だけではないので、

言うほど閉鎖的なものではない。

スタートアップとかは、web × 他業種だったりして、

他業種について、本業の方と同レベルで詳しくなることもあるんじゃないかと。

できる人とそうでない人の違いはどこにあるかというと、仕事の幅なんだそうです。

別にweb関係ない。どの業界でもそうだろ。

技術の幅が狭いエンジニア、例えば「JavaScriptしかできません」のような専業エンジニアがいる。これは東京に多いんだよ。

逆に、大阪には、仕事の幅が広いエンジニアがいる。大阪場合、「なんでもやれる」と言えないと仕事がとれないから、結果、フルスタックエンジニア生まれる。

なんとなく言いたいことは分かる。だが、

一方、大阪エンジニア自己評価が低く、基礎的な技術をしっかり学んでいるそうです。PHPからRubyといったように言語浮気をしようとしないんだとか。

おいおい他言語浮気はしないけど、一言語だけではダメとかどっちなんだよ。

何でもできるんですか、それとも知ってることだけですか?

フロントとバックの違いは浮気にならないとでも言いたいのでしょうか。

でも、言語としてはjsphpの2言語となるので1言語以外をやるなら、それは浮気ととれるでしょう。

結局、言葉遊びで「言語浮気」って使いたいだけだろ。浮気定義からやり直せ。

加えて、東京大阪の違いは分かった。だが、東京ディスる必要はない。

他人から聞いてきた話を引用するなら、不快になると分かる箇所くらいオブラートにつつめ。

今はweb仕事が多くなったけど、インターネットがない時代にはもっと他にもエンジニア仕事があったわけ。

別にだってweb以外はあるだろうに。なんなら、エンジニア不足って言われているんだよ?? あと、IoTでググって。

あと、web世界だと35歳になったプログラマーが悩むなんてことがよくある。これは、35歳定年説を信じてのことなんだけど、気にする必要はない。そんなの実際はないから。

おそらくですが、「35歳定年説」をそのまんま鵜呑みにしてるのは、webで働いてない人がほとんどかと。

web系の人は、ずっとプログラマーでいく意識が強い。生き残るために新しい言語を求めてしまうけど、そうじゃなく、仕様書を書いたり、情報処理勉強をしたりして基礎的なことを学ぶ方が賢いよ。

プログラマーバカにし過ぎ、基礎をやってるやってないは個人差。プログラマという職業関係ない。

ギャルIQが低いといっているのと何も変わらない。

実際は勉強のできるギャルはいくらでもいる。

から、稼ぎたいなら銀行システムを作ったほうがいい。ペースもゆっくりだし。銀行システムは作るのに数年単位かかるしね。

数年かかるのはいいが、終わらないのは困る。「みずほ銀行 システム開発」でぐぐれ。

特にweb世界はまだ単価が低く、紙の方がギャラが高いというのが現状。なので、割のいい仕事をしたいなら、やはりwebを出ないといけないんですよね。

また、手を動かす仕事から離れる話でも、最近思うところがあるんです。先日、界隈の人と話した時に「目立ってる人より、影に隠れている人の方が稼げてる」なんて話を聞いたんですよね。

これって、ライター世界にも当てはまっていて、注目を浴びているライターよりも、その人に仕事を振る人、編集をする人の方が効率的に稼げてるなんてことがあるんですよ。

単価の話関係ないじゃん!!

用は、管理職系の方が給料高いんですよって言いたいんでしょ。

ついでに具体的な年収記載してから言ってください。

仕事を振る人の方が効率的に稼げていることもあるでしょう。

あ、もしかして、この文章アウトソーシングですか?(煽り

なので、この記事を読んで、その重要性に気づいたエンジニアデザイナーライターなどの専門職の方は、ぜひ将来のキャリアについて考えてみてください。

その重要性ってなに?

フルスタックになること? 情報処理資格をとること? 管理職を目指すってこと?

それとも、Webをでること?

締めで使う「その」という指示語の範囲が広すぎる。記事の内容をまとめた後に使ってください。

それと、年収をあげるのは、別にプログラマのままでもできるんじゃない?

基礎を勉強して、フルスタックになって、

プレイングテクニカルディレクターとかになれば、

そこそこ給料はよくなりそうだが??(そんな職種があるかは知らんが)

金額会社次第でしょ。

提供:らふらく(@TwinTKchan))

お前が聞いてきたはなしじゃねえのかよーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー。

社長から聞いてきたーというくだりもそうだけど、

89世代意識高い「系」だったら、平成生まれ視点での言葉を言ってほしいわ。

この増田を読んで、煽り重要性に気づいたブロガー意味のある煽りについて考えてみてください。

「聞いた話をうまく活用しているサイトはやっぱアソコだよな」

エロサイトか。

2016-07-18

http://anond.hatelabo.jp/20160718184149

本日からお世話になります私、増田と申します!こういった業界は初めてなので色々とご迷惑をおかけすることになるかとは思いますが何卒よろしくおねがいします!」

鮮血のシャワー事件から二ヶ月。私の隣には新たな顔が居た。

蛍光灯を鈍く反射する黒い髪。昨日床屋に行ったのであろう、横髪の空き具合に統一感がない。唇はリップクリームを塗っているのだろうか、グロスが効いていて、潤っているように見える。

彼は椅子を回転させてこちらを向いた。

「あの、増田と申します!あんまり経験がないのですが、少しでもお役に立てればと思います。よろしくおねがいします!」

キハキとした声で私に話しかけている。目には白と黒。その2色だけ。黄色だとか、赤色だとか、そんな不健康そうな色はどこにもない。

「ああ、よろしく。」

機械的にそう返事をして私は画面に向き直す。彼が来る事はわかっていたので、仕事を振れるように上司から言われテスト仕様書を書いているところだ。

だが、例によってまだ仕様書は出来ていない。彼が次に口にする言葉はわかっている。だが、それに対しての答えを持ち合わせていない。はて、どうしようか...

「あの、何か手伝えることはあります!?

彼は曇りのない瞳で私の顔を覗き込みそう言った。机と胸で板挟みになっている手は少し日焼けしていて、薄い産毛が顔を覗かせている。

「うーん、そうだなあ...」

私は椅子にもたれかかって天井を見上げた。しばらくの沈黙。瞼を閉じる。嫌な上司の顔が浮かぶ。瞳を開き、横を見る。

コーヒーを、入れてくれるかな?」

2016-07-17

Excelに苦戦中

いわゆるExcel方眼紙システム設計書を書いているのだが、これがどうにも上手くいかない。

問題は色々あるが、大きく分けて「必要情報が見えにくい」「変化に追従するのが大変」に集約される。


まず「必要情報が見えにくい」について。

そのメソッド記述するのに必要な、他の設計書や仕様書を見つけにくい。

例えば、他の設計書(1ファイルで1クラス)に書かれているメソッド名や引数が合っていなくても、すぐに発見しづらい。

また、入出力情報が書かれたインターフェース仕様書を探しにくいなどなど。

そもそもどうユースケースを読んで、設計必要クラス抽出するかもよくわからないし。


次に「変化に追従するのが大変」について。

上述の状態設計書を書いた結果、製造するプログラマから「こんなんじゃ実装できない」と突っ返されて修正するパターンが多い。

また設計を進めた結果、仕様変更必要事態が度々発生する。

更に要件定義レベルでの見落としによる手直しも、結構な頻度で起きる。

いずれもExcelファイル1個に留まらない、影響範囲の大きい修正になるケースが殆ど

そんなことが相次いで発生した結果、修正対象抽出修正確認作業作業量が膨大化し、全く対応できない。


というわけで、もはや限界ギリギリだったり。

「1個ずつ解決していけばいずれ必ず終わる」を合言葉に、気合努力根性でやってきたけど、なんでこうも先が見えないのか意味がわからない。

どうしたら対応できるのか・・・

2016-07-08

http://anond.hatelabo.jp/20160707235347

お疲れさまです。

設計書の指摘事項および質問事項です。

まず全体的に、インデントおかしいのと「}」が不足しています

プログラム仕様書はいえ「}」や「;」は書く必要がないため、もう少し日本語として通じる文章にしてください。

人間 俺の友達

使われていない変数ですが、問題ありませんか?

下記の

関係 彼女と俺の友達

初期化必要なのでしょうか?

俺 = 彼女いない歴 = 年齢;

俺は、人間型の変数なので、真理値を代入できないのでは?

真理値を人間型にキャストする共通関数があるのでしょうか?

もし(彼女フリー; 彼女彼氏出来るまで; 俺頑張る++){

「もし」ではなく、繰り返しを意味する「諦めない」でしょうか?

また「彼女フリー;」setupメソッドで「なんかモテそう」を代入していますが、フリーで上書きして問題ありませんか? その場合「なんかモテそう」の代入処理は必要なのでしょうか?

変数彼女フォーカス不明のため、このクラス内だけでは考慮できません。

次に「俺頑張る++」は、人間型の変数俺の頑張るプロパティインクリメントするという意味でしょうか?

もしもだ(彼女と俺の友達恋人){

上記のループが回っているときに、このメソッドではない別のメソッドで、変数彼女と俺の友達の値が変更されるため、上記のループの中に条件式があるのでしょうか?

もし、そのためであれば、非同期処理を本当に使う必要があるのか、もう一度設計見直してください。

そのためでないのなら、ループが始まるまえに、条件式を記載してください。


return 今夜も童貞;

voidなので、値を返すことはできません。

updateメソッドの型を指定するべきだと思われます

また、条件式の結果によっては、値を返さないケースがあります

その場合は初期値を返すのか、エラーを投げるのか明記してください。

以上、指摘事項を受けて、修正箇所があれば修正を行い、レビュー結果ドキュメント修正箇所を明記してください。

また、質問箇所については、レビュー結果ドキュメントに回答もセットで記載してください。

文章でわかりにくいところがありましたら、遠慮なく私のところまで聞きにきてください。

明日は午前中は自席にいます、午後から電話会議が散発的にあるため定時後でしたら対応可能です。

確認よろしくお願いします。

2016-07-05

仕様書の書き方がわからない

人によって場所によってプロジェクトによって仕様書意味が変わるしコンセンサスもない。

何書けばいいんだ。

締め切りしか書くことない。

仕様書仕様書っていうけど

設計仕事ですからね?

しかも何がどこにある程度の事しか書かれてないっていう

設計ができない、ならわかるけど仕様書が書けないって言わないでしょ

Linux勉強したいですって言ってサーバー名とかパスしか書かれてない仕様書読んでもまったく知識つかないよね?っていう

まず基本的コマンドLinuxの知識つけるには資格勉強したり検証環境自分で作ったりするしかないよね、っていう

何がしたいのかさっぱりわからん

ていうか非ITが知ってる言葉がそれしかいか仕様書っていうのを一生懸命言ってんの笑える

ファイルパスとかサーバー名とかそんなもんしか書いてねーよ死ねw

http://anond.hatelabo.jp/20160705224433

仕様書を書くときにどのように書いているか(行動と考えてること両方)を、最初にやり始めることから順に列挙してもらえないでしょうか?

頭の悪い僕はどうやって生きていけばよいのか

僕は頭が悪いのにエンジニアをやってる。

仕事ができないから、残業カバーする毎日ですね。

・要領が悪い

メンタルが弱い

頭が悪い

これが僕の三重苦。

打ち合わせでみんなの会話についていけない。

いつまでも仕様書が書き上げられず、なんども推敲してしまう。

アクションを起こすのが怖くて先延ばしにしがち。

何度もなおそうと励んできたけど、

結局忙しくなってうやむやになってしまう。

こういう生き方は、もうやめたいのだけれど。

追記:

学部卒の10選手

まり褒められた設計の仕方はしてないですね。

自分の中でルール確立されてないのがよくないのでしょう。

図やマトリクスを書いて抜け漏れなくやってるつもりなのですが、

なぜか自分機能けが、他機能との整合性が取れなくなることが多いです。

コメントありがとうございます

もう少し落ち着いてやっていきます

2016-07-02

エンジニア英語必須と言うけれど

まだまだ一部のエンジニアにとって、という話だよね。

少なくとも英語の読み書きができないと最新のテクノロジー情報キャッチアップできないとか、stackoverflow読めなくて問題解決できないとか、オープンソースコントビュートできないとか、これはまさにその通りだよな。オレもオレなりに英語力の不足を痛感する機会は腐るほどある。

でも日本にいる80万人以上のITエンジニアのうち、そうした能力必要とされないエンジニアがこの日本の大部分だ。

なぜならSIerみたいな受託開発・運営ソフトウェア業界売上高6兆ぐらいのうち半分以上で、かつ彼らの大部分は日本語ドキュメントが充実してる枯れきった技術を使い続けるから

枯れた技術で安定性を担保ってのはわかるが、公式サポートが終わってるJava4~6,PHP5.0~5.3を使ってんだよ。保守じゃなくて新規案件だよ。COBOL,アセンブラみたいな化石言語保守し続けるところもあるがあれはもっと別の世界から来たナニカって感じだな。そっちはよく知らん。

オレは新卒で入った受託ソフトハウス大手SIerで計8年働いて、6年ぐらいはwebアプリプログラマSEとして色んな現場みたが、オレも含め一緒に仕事する人は誰も英語なんて求められてなかった。英語読むより怪しいExcel仕様書なりソースコードコメント読むなり顧客メール読むなりして汲み取るのが大事だし、コーディングで困ったら日本語でググればまずヒットする問題ばかり。

コーディング英語を使うと可読性が下がるから変数名・メソッド名・データベーステーブルカラム名ヘボン式ローマ字表記で書けってわけ。顧客マスタは「KOKYAKU_MASUTA」だし、担当者は「TANTOUSHA」と「TANTOSYA」で表記ゆれ、笑えるよな。

とにかく言いたかったのは、docker1.12だとかRails5だとか機械学習の新しいフレームワークだとかそういう話題でワイワイやってる層とはまったく別の層がいて、そいつらに英語は全く必要ないしこれから先の何年も求められずにやっていくだろうっていうこと。

悲しい愚痴、以上。

2016-06-03

ツイッターとかまとめブログでこんなのないかしら

※本当は何をやっているかは知らない

2016-05-26

http://anond.hatelabo.jp/20160526134826

テスト仕様書みたら「上部2つ目のテキストフィースドにカーソルを合わせてクリックカーソルが点滅することを確認。」

実は昔、

クリックしても、カーソルが点滅しなくて、フォーカスが当たってるか分からないアプリ実在したのよ。

からめっちゃ大事な項目なの。

2016-04-26

anond:20160426124418 続き

プレビューまでは全文見えるんだけどな。すまんやで。しかもまだ続く anond:20160426150324

anond:20160426124418 の続き

おそらく、上記のサービスを使っているシステムのうち、この問題のせいで悪用可能なものは多数あることと思います特にデスクトップアプリでは、コンパイルされたアプリバイナリから秘密情報がそのまま取り出せることは、サービス側で何も危険なことを要求していなくてもよくありますGoogleOAuth の使い方を多数提供しているうちで、client_secret と redirect_uri を両方受け取るエンドポイントのことが書いてあるのはたったひとつだけだというのは重要な点です。少なくとも Google場合、redirect_uri があっても、このエンドポイントウェブブラウザベースアプリには推奨していません。しかし、だからといって実際に独自ブラウザでそれを使う人や、このフロー標準的ブラウザ用のエンドポイントコピーする人が一切いなくなるはずがありません。それに加え、Google例外なのであって、世の中にはセキュアな OAuth フローを受け入れず client_secret (や同等品) を常に渡すよう要求する愚かなサービスが今も満ちあふれており、そのフローウェブブラウザを通るときでさえも要求しているのです。さらに悪いことに、こうしたサービスの多くはユーザウェブブラウザを通して「しか」利用できないのですが、これは後ほど詳述します。

前掲のセキュリティ文書は、アプリ認証情報 (client_id と client_secret) を盗んだ人ができる悪行にいくつか言及しています。以下に、この攻撃と組み合わせることで (これまで筆者の知る限り公表されていない) 危険行為を実行可能にする問題をいくつか取り上げますさらに皆様の独創性にかかれば、「秘密」のはずのものを盗んだ人が悪用できる方法は他にも発見できるはずです。

セキュアでないトークン

トークンベース認証は多くの開発者にとって新しい概念です。そのため誤解も多く、EVS のようなもの設計する開発者の中にも、ただ何かの設計ガイドライン (たとえば OAuth) に従って API の動作を決めれば、あるいは他のプラットフォームのしていることをコピーすれば、自分プラットフォーム自動的にセキュアになるはずだと考える人が少なくありません。しかし何かをセキュアにするには、その要素ひとつひとつを余さずセキュアにする必要があり、それらの組み合わせすべてをセキュアにする必要があり、全体の枠組みもセキュアにする必要があります。思い出してください、全体のセキュリティ強度はその弱点の強度に等しいのですから、何らかの大まかなフレームワークを固守することだけに頼りきって、その通りに使う限り何をやってもセキュアだ、などと安心するわけにはいきません。OAuth ベースフレームワークそれ自体は、その内部要素のセキュリティを確保することに関しては殆ど何もしてくれません (ある種の要素で、あからさまにセキュリティを害するものだけは別)。

トークンベースシステムで少しでもセキュリティらしさを出すには、最低でもトークン生成に暗号学的にセキュアな擬似乱数生成器 (CSPRNG) を使う必要がありますが、この話題はあまりよく理解されていません。さらに悪いことに、一般的スクリプト言語の適切な CSPRNG 用 API は非常に少なく、しかしそうしたスクリプト言語が、人気ある最新サービスの多くを設計する際の基礎となっていることが多いのです。

もし生成されるトークン予測可能であれば、攻撃者はトークンを推測するだけで別のユーザになりきって悪意ある行為をすることができてしまます。筆者は、fortune 500 クラス大企業による OAuth ベースサービス一種の単調増加 ID (おそらくデータベースフィールド?) をそのままトークンに使っているのを見たことがあります。他にも、生成されるトークンがすべて単調関数の出力のようなサービスもありました。よく調べてみると、それは現在時刻に基づく非常に単純なアルゴリズムでした。こうしたシステムでは、まず自分としてログインし、現在トークン ID を見て、その後の ID を予測すれば、続く任意ユーザになりかわってトークン交換その他の操作にそれを使うことができるでしょう。他のテクニックと組み合わせれば、もっと標的を絞った攻撃も可能です。

このクラス攻撃は前述のセキュリティ文書で「4.5.3. オンライン推測による新規トークン取得の脅威」や「4.6.3. アクセストークン推測の脅威」に分類されています。この問題には解決策があるとはいえ、現時点でこの間違いを犯しているサービスの膨大さと、この間違いの犯しやすさを考えると、任意OAuth ベースサービスが外部レビューセキュリティを証明してもらえる可能性はあまり高くありません。

本欄の主眼ではありませんが、乱数に対する攻撃の中には、セキュリティを固めた CSPRNG を使っていないと OAuth ベースサーバを完全に破壊してしまえるものもあります。こうした問題は他のシステムでも非常に困ったものではありますが、動作のすべてが乱数のやりとりの上に成り立っている普通OAuth 実装では、より一層この問題が際立ちます。こうしたトークンは EVS のサーバ側で生成され、「普通実装における」OAuth がよくやる使い方ではサーバ信頼性を奪い、関連するトークンすべての予測可能性を高めていきます。最新の攻撃手法を防げるセキュリティ強化 CSPRNG が用意できないのであれば、もっとハードルの低い別のプロトコルに乗り換えたほうが良いでしょう。

一方、一部の OAuth ベース実装乱数必要性クライアント側に移すような構造になっていることも注目しましょう。色んな意味で、これは問題を別の場所に移しただけではありますが、サーバ側のアタックサーフィスを減らすのは事実です。これによって、少なくとも情報強者利用者は、信頼できるサービスをセキュアに使うことが可能になります。ただし情報弱者脆弱なまま放置ですが。今回の例に当てはめてみると、この種のセットアップでは AFCP の開発者が頑張って EVS をセキュアに使えるようにすることと、EVS 自体が陥落する危険回避することは可能ですが、ABC や XYZ が EVS をセキュアに利用するかどうかは別問題です。

クロスサイトリクエストフォージェリ (CSRF)

本論に入る前に指摘しておきたいのですが、CSRF 攻撃はその名前に反して、外部サイトからスタートする必要はありません。CSRF 攻撃というのは、自サイトへのリンクユーザが貼れる、掲示板メッセージングソフトのようなサイト自体からでもスタート可能なのです。

色々な手法CSRF に立ち向かうべく設計された数々のテクニックフレームワークがあります。これらのシステムの多くは、OAuth ベースのもの統合すると使いものにならなくなったり、サイト攻撃さらしかねない行為を促すことがあります

CSRF を防止するひとつの仕組みとして、ブラウザから送られる referer (原文ママ) が外部サイトを指していないことを確認するというものがあります。多くの OAuth 実装ユーザ特定の外部サイトから連れてくるよう要求しまから、この防御策は執行できません。OAuth サーバリダイレクトする膨大なサードパーティドメイン、また関係する URL やドメインの完全なリストは明文化されていないうえに折々で変更があるため、EVS のドメインとページ全体をホワイトリストにするのは不可能です。

また、EVS の提供者が寝返って AFCP を攻撃しようとする可能性がないかどうかも検討する必要がありますOAuth の背後にある原則ひとつOAuth ベースサービス側が利用者を信用しないことです、しかし同時に、利用者側には CSRF 回避策を見なかったことにしてサービス側を完全に信用することを要求しています理想認証システムというものがあるとすれば、一方通行ではなく相互レベルの不信を確立するでしょうに。

転送元と転送先のどちらかだけの、部分的ホワイトリストというのも難しいことがあります。使っている CSRF 対策フレームワークによりますが、機能オンオフ中間がなく、特定のページや転送元だけを無効にすることができないかもしれないので、その場合 EVS 利用者CSRF 対策フレームワークを一切使用できなくなります

OAuthCSRF 攻撃を防ぐ CSRF トークン指定するようにと、オプショナルな state パラメータ定義していますしかしながら、OAuth ベースサービス一般的state の長さや文字種を制限し、要求どおりそのままでさないことがあるようです。そこで、おかし互換性問題が起こるため、多くの OAuth ベースサービス利用者リダイレクトのエンドポイントにおける CSRF 防御をすべてオフにせざるをえない状況に追いこまれています。これは「10.14. コード・インジェクションと入力バリデーション」に分類されていますstate パラメータの別の懸念は、EVS 側で stateアクセスのある人はだれでも、リクエスト改竄して、それ以外はまったく有効なままのパラメータを付けて AFCP にブラウザを送り返すことができるという点です。

OAuth ベース API の利用者は、自分アプリサービス登録する際にひとつか複数の URI をカッチリ決めておくよう求められるという制限も課せられています。これは redirect_uri に使えるホワイトリスト URI です。この仕組みにひそむ重大なユーザビリティ問題は後述するのでひとまず措くとして、この制限のせいで開発者は、state パラメータや他の潜在的危険の伴うアイディア姑息な工夫をこらし、泥沼に沈んでいくはめになっています。多くの OAuth ベースサーバは、ホワイトリスト URI をひとつしか許可していなかったり redirect_uri との完全一致のみ有効パラメータの追加を認めなかったりしています。このせいで開発者たちは CSRF 対策フレームワークの利用をやめたり、あらゆる危険ものstate パラメータに詰めこもうとし始めたり、浅薄システムを自前で作り出したりしています。その結果、redirect_uri と state の組み合わせによってはユーザ不適切なページに誘導する危険性が出てきます。これは「10.15. オープンリダイレクト」に分類されます

こうしたリダイレクトの問題は、パラメータをしっかり認証していないせいで、それ自体悪用可能なのですが、これを前述の「OAuth サービスへの偽装」問題と組み合わせるとユーザ大惨事をもたらしかねません。盗んだ client_id と client_secret を使えば、悪いやつらは AFCP とまったく同じ情報認証できるので、本物の AFCP にも見ぬけないようなリダイレクトを作ることができます。また、悪意あるユーザも、本来自分の持っていない AFCP 内の権限を取得するような state パラメータの利用方法改竄方法を見つけることができるかもしれません。その際には、おそらく盗んだ認証情報も使うことでしょう。概して、「普通実装における」OAuth の低品質設計のせいで、また特定の分野に関する教育レベルが低い外部開発者の直面する問題のせいで、OAuth ベース利用者に対する攻撃はしばしば、本来あるべき状態よりもずっと容易になっています

ここで読む意義のあるものとして、さらに「3.5. リダイレクト URI」「3.6. state パラメータ」「4.4.1.8. redirect-uri に対する CSRF 攻撃の脅威」があります

章のまとめ

セキュリティに関して言えば、「普通実装における」OAuth仕事ぶりはとてもひどいです。OAuth が目指していると思われるセキュリティ目標の多くは、達成されていません。さらに、OAuth ベースサービスの中には、種々の攻撃に対して無防備でいることを利用者公然要求するものがありますサービスをセキュアに使える場合も、そのことが知られているとは限らず (サービス側の、トークン生成手法といった重要セキュリティ詳細が明文化されていないうえにクローズドソースなため)、OAuth は今なお多くの低品質プログラミング習慣を招いていますOAuth は外部の開発者を守る点でほとんど何もしませんが、そうした開発者が使っている各種フレームワークの方はといえば、こちらも真のセキュリティ提供していなかったり、厳しい自制と注意がなければセキュアに使えなかったりする代物です。

この記事についていえば、個人的蔓延していると思った問題の一部を取り上げたものに過ぎません。この中には、極度に低質な、一切 OAuth の規格で義務付けられていない慣習を、他所OAuth に使っているのを見たまま開発者コピーした結果というものもあります

OAuth ベースサービス開発者もその利用者側の開発者も、OAuth ベースプラットフォーム実装したり利用したりするためには、ここでリンクした文書をすべて読んで理解する必要があります。挙げられている 50 クラス攻撃も、各クラスの深刻度も完全に把握する必要がありますし、そのうえで「実装仕様書セキュリティガイドラインには漏れがないとは限らない」ことにも留意すべきです。この記事は公式文書にない問題をいくつか取り上げているとはいえ、OAuth セキュリティ問題の表面をなでているに過ぎないことも覚えておくべきです。ここに混ざって、公式 OAuth 提案に加えられる変更点はどれもまったく新たなセキュリティ問題を引き起こすものですが、残念ながら変更はよくあることなのです。そこで各々が、乱数生成やセキュリティ調査技術といった OAuth 以外のセキュリティ関連分野も理解していなければ、OAuth でそれなりのレベルセキュリティを実現することはできません。

真のセキュリティをお探しの方には、よそを探すようお勧めします。最後の章で OAuth の代わりになる選択肢をいくつか取り上げます

ユーザビリティ関連

(略: ふつう実装では、サービス側がプラグを引き抜くようにして自由利用者出禁にできる。ビジネス的にもまずいし、悪意あるユーザが API 利用者を騙って出禁になるとアプリへの DoS になる。)

(略: サービスからは API 利用者という大きすぎる単位しか見えないので、たとえばビデオカメラアプリ単位で利用帯域などを制限せざるを得ないが、そうするとそのビデオカメラは、一部ヘビーユーザのせいで他のユーザが締め出される事態になる。OAuth 以外のサービスならふつうユーザ単位対策としてユーザ開発者アカウントを取得してもらうのも面倒すぎる。ていうか手動プロセスを挟んでたり。)

(略: ふつう実装SaaS モデルしか見ていないので、URI を持たない AFCP のような社内ソフトや、ビデオカメラのようなデスクトップアプリには使えない。アプリcURL 的なもので API を叩こうとしても、JavaScript必要だと言い張るサービスもある。グローバル企業が地域別にドメインを分けていたら URI が足りない。客ひとりひとりにサブドメインを与える製品だと URI が足りない。足りるとしても追加・更新メタ API で簡単にできない。ひとつの URI ですべてのリクエストをこなすのセキュリティ問題もあり、ロードバランス等の必要性も出るし、社内ソフトデスクトップアプリに余計なウェブサイトへの依存性を加えることになる。httpサーバlocalhostで立てるとかアホか。)

(略: オープンソースしづらい)

(略: トークンが定期的に期限切れになるので可用性が下がる。たとえばビデオカメラから複数の動画をアップロードしている途中で切れたらムキーってなる。再認証して途中からできるのもそれはそれで CSRF の温床。AFCP のような場合は期限切れがあってはならないので、パスワード等を預かる

OAuthのことを1ミリも知らない俺が

OAuth ディスの記事を酒の勢いで訳してみたゾ。前半はつまらないから、「章のまとめ」か、それ以降だけ読むといいゾ。なぜか後半が切れてた。こっちだけでいいゾ anond:20160426145507 anond:20160426150324

http://insanecoding.blogspot.com/2016/04/oauth-why-it-doesnt-work-and-how-to-zero-day-attack.html

OAuth がうまくいかない理由と、既存サービスゼロデイ攻撃方法

OAuth とは

認証 (authentication: 本人確認) と承認 (authorization: 権限付与) のシステムを設計し、API を規定し、複数の異なるシステムを統合するために用いられる提案をまとめたものです。

OAuth には色々な種類があり、version 1.1a や 2、その各部の上に他の規格を乗せたものなどが存在します。世の中に出回っている数々の実装によって、具体的な利用状況は大きく異なります。

おことわり

前にも OAuth について書いたことがあり、たくさんの反響をいただきました。前回の記事に対する批判の一部を避けるため、今回の記事について先に断っておきたいのですが、この記事は OAuth の使われる典型的な場面に焦点を当てており、論じられる点のほとんどは、何らかの方法OAuth を利用する大手サービスのほとんどすべてに当てはまるということです。

言いかえると、OAuth を用いているあらゆるプラットフォームが壊れているとは限りません。OAuth にはバリエーションが多いうえに、2.0 だけに限っても 76 ページに渡るパターンがありますので、OAuth に基づいた何かに適合していながらもセキュアであり、使っても問題ないものは存在しうると言えます。ですから、あなたお気に入りOAuth 実装や設計が、ここで論じられる問題の一部または全部を免れていることもありえます。確率は低いですが。

また、OAuth を使っているものの中には規格を誤用しているものがあるとか、OAuth はその使い方を強制しているわけではないとか言う人もいるかもしれません。どちらにせよ、ここでは特定の OAuth ベースの規格について述べるのではなく、現状で大手が OAuth をどう利用しているかについてを、それが規格に適っているかどうかに関わりなく論じるつもりです。こうすることで、多くの読者に影響を与えることになるでしょう。危険な方法OAuth を使っているサービス利用者であっても、また自ら OAuth ベースサービスを管理していて、他のみんなが作っているのを真似てプラットフォームを作ろうと思っている人だとしても関係があるのです。

記事の構成

この記事は長くなりますし、言ってみればほとんどの章はそれ自体でひとつの記事として十分なほどの話題を扱いますので、大まかな流れをご説明しておきましょう。

この記事は、現在 OAuth 業界でおこなわれていることを調査した結果のまとめです。OAuth を使う製品のすべてにこの記事のあらゆる点が当てはまるというのではなく、危険だったり無価値だったりするサービスの背後に見つかった慣例や根本原因を紹介する記事です。

この前書きのあとは、まず OAuthセキュリティ欠陥を分析することから始めるつもりです。こうした欠陥の中には、セキュリティコミュニティでよく知られていて、書籍などですでに分析されている一般原則が当てはまるものもあります。しかしこの記事では書籍化されていないケースも扱いますし、有名な欠陥についても、平均的な開発者および責任者に理解しやすく、対策の必要性がはっきりするように工夫するつもりです。

その後は、OAuth の主要素が一般的に言ってどのように実装されており、そうした普通の実装がどのようにサービスを使いものにならなくするのか、すなわちそのサービスで達成できることを極度に、不適切に、かつ意図に反して低下させてしまうのかを分析します。ごく一部のケースでは回避策の足がかりになるかもしれないテクニックについて論じますが、そういうのを実装する馬鹿らしさにも注目します。こうした記述の中では繰り返し何度も、OAuth を使う人たちがどれほど自分と自分のビジネスにとって損なことをしているのかが説明されます。

最後に、OAuth が適切に使われうる数少ない場面と、すでに利用されている OAuth の代替品を簡単に取り上げます。代替技術に関する調査の結果を提供するつもりですが、その中には Amazon のような大企業がセキュアで使いやすく信頼性の高い API を実現するために何をしているかの報告も含まれるでしょう。

責任ある情報公開

いま普通に使われているかたちにおける OAuth の欠陥の幾つかを悪用すれば、大手サービスに対して強力な攻撃を仕掛けることができます。OAuth に対する攻撃は何も新しいものではありません。IBM や Oracle を含め、懸念した IETF メンバーOAuth ベースサービスに対する攻撃を 50 クラスも記述した 71 ページもの文書を 3 年以上前に出したように、また筆者も前回の記事でこうした点のいくつかを議論したようにです。それにも関わらず、OAuth ベースシステムの主要なセキュリティ欠陥は非常に蔓延しています。

筆者は、いくつかの大手企業の役員や開発者に、そこの OAuth ベースシステムが抱えるセキュリティ欠陥を指摘したことがあります (そのうちのひとつは 4 年前のことです) が、全員、自社システムを修正するために一切何もしませんでした。まるで、OAuth の人気度からして、他の現実的な解決策をひとつも聞いたことがなく、それゆえに OAuth が最もセキュアな選択肢に違いないと決めてかかっているようです。どうも、OAuth のコア原則に対する攻撃のデモを文書化した情報も、聞いたことがないか、肩をすくめて無視するかしているようです。そこで、この情報をもっと広く拡散することによって、影響のある人たちの尻を蹴りとばしてあげたい、そしてサービスを設計あるいは管理している人たちにモーニングコールの役割を果たしてあげたいと願っています。

というわけで、OAuth ベースの何かを提供あるいは利用するご自分のサービスを調べて、こうした欠陥の一部あるいは全部が存在することに気づいたなら、どうぞ責任をもってこの情報を取り扱ってください。ご自分のサービスを適切にアップデートしたり、関係する問題に対応するようビジネスパートナーに適切な圧力をかけたりしてください。

ここで言及されている情報やリンクされている情報は今のところ既存のサービス悪用できるかもしれませんが、どうぞ責任ある行動をとり、他人のもの破壊するのではなく改善することを目指してください。この記事は、自社サービス不適切に実装している人たちへのモーニングコールのつもりで、その改善を促すために書いているのであり、悪用したがっているハッカーたちのハウツーもののつもりではないのです。

想定する利用形態

この記事では、ふたつのシナリオに注目して、その場面でどのように OAuth が組み合わされているのか、そしてなぜうまくいかないのかを検討します。記事を通して何度もこれらのシナリオに戻ってきますので、頭に入れておくことは大事です。

まず、Exciting Video Service (略して EVS) というサービスを思い描いてみましょう。ユーザが動画をアップロードしたり友人と共有したりできて、完全公開にしたりアクセス制限を設定したりできるようになっています。また EVS は動画のアップロードや削除、およびだれが視聴できるかの権限管理に OAuth ベースの API を提供しています。

ただ、例としてこの想像上のサービスに焦点をあてますが、論じられる問題はあらゆるサービスにも当てはまります。ファイルであろうと文書ストレージであろうと、カレンダー管理やオンライン会議、ディスカッショングループ、はたまたリソース管理であろうと OAuth ベース API を提供する他のいかなるものであろうとです。また、筆者は本当にどの特定の動画サービスのことも言っていないということを覚えておいてください。問題点の一部あるいは全部は、OAuth を使っている既存の動画サービスに当てはまるかもしれませんが、EVS がそのサービスのことを指すわけではありません。どれが当てはまるかは読者への練習問題ということにしてもいいですね。

ひとつめのシナリオとして、ビデオカメラの製造会社を想定しましょう。そのビデオカメラには、録画した内容を EVS にアップロードする機能のあるソフトウェアを付属させたいと思っています。つまり、ユーザビデオカメラを自分のコンピュータに接続して、その独自ソフトウェアを開き、ビデオカメラからアップロードしたい動画を選んでしばらくすると、それが EVS にアップロードされているというものです。

ふたつめのシナリオとしては、ある中小企業が職員用に EVS で 50 アカウントを購入し、全職員が動画をアップロードして同じ部門の職員と共有できるようにする、ということにしましょう。この会社は A Friendly Custom Platform (AFCP) というソフトウェアで職員と所属部門の管理をしており、この AFCP サービスを EVS に統合したいと考えています。望んでいるのは、管理者が AFCP を使ってだれかを営業部門に配置したら、その職員が自動的営業部門メンバー所有の動画すべてに対するアクセス権を取得するということです。営業部門からいなくなった人には逆のことが起こるようにもしてほしいと思うはずです。

問題点

セキュリティ関連
認証情報の盗難 / アクセス権の詐称

トークンベースの認証システム (OAuth のコア) が現在よく利用されている最大の理由のひとつには、「適切に実装されれば」サードパーティアプリサービスに各ユーザの認証情報 (パスワード等) を提供しなくて済むという点があります。サードパーティに個人ユーザの認証情報を渡すのは、以下の理由から望ましくありません:

上記の問題点は、OAuth だけでなくあらゆるトークンベースの認証システムでも回避できます。よく OAuth の強みとして挙げられていますが、独自というわけでは全然なくて、他にも同じ強みを実現しつつ OAuth の弱点のない選択肢はあるのです。

さて、確固とした土台に基づいてはいるものの、「普通の実装における」OAuth は、上記の問題を回避しようとして以下のような手順に沿ってシステムに情報を提供します:

  1. ユーザサードパーティアプリ/サービス (たとえば AFCP) を訪ねて、特定のサービスと統合したいことを知らせる。
  2. AFCP は、EVS でホスティングされた特別なログインページを出してユーザに EVS の認証情報を入力させる。
  3. EVS は、その指定したアクセスレベルユーザが本当にサードパーティ (AFCP) へ与えたいのか確認する。
  4. EVS は AFCP に一種のトークン (複数の場合もある) を提供し、各種 API コールに使えるようにする。

このトークンユーザの認証情報ではありませんから、そしてひとりのユーザひとつアプリの組み合わせだけに有効で、指定された権限しか持たず、あとから破棄されるようになっていますから、きちんと前述の問題点を回避しているように思えます。しかし実際には、ちゃんとした土台を核として持っているにも関わらず、OAuth の普通の実装で使われているこのフローは、上に挙げた問題すべてに対処しているとは言えません。

この設計はそもそも危険なスタート地点から始まっています。セキュアなプラットフォーム設計の第一原則は、危険な地点から始まったものは既にダメ、逆転不可能、ということです。手順 1 のせいで、EVS 自体ではなく EVS を利用するサービスから始まっているので、ユーザは最初の一歩からして中間者攻撃を受けたような状態にあります。これは、かかってきた電話に個人情報や口座番号などを教えるようなもので、自分の使っているサービスの者だと名乗っていますが、番号が本物かどうか分からなかったり非通知だったり、という場面のコンピュータ版だと言えます。最近はこういう詐欺がたくさんありますから具体例を挙げる必要はありませんね。要点は、接続を開始する相手が信用できなければ、その接続は一切信用できないということです。EVS 自体の側から手順を始めるのでない限り、上に挙げた目標をすべて実現する API 利用のためのセキュアな認証システムは設計不可能です。

(略: 手順 2 で、それっぽいページに誘導すれば認証情報を盗める)

(略: そうした詐欺を企業自体が後押ししているような風潮もある)

(略: スタンドアロンアプリなら、ログインを詐称する必要すらない)

この種の攻撃は前述のセキュリティ文書で「4.1.4. 脆弱性を突かれたブラウザ組み込みブラウザを使ったエンドユーザ認証情報のフィッシング脅威」として分類されています。提案されている解決策は?

クライアントアプリユーザに直接認証情報を求めることは避けるべきだ。加えて、エンドユーザフィッシングや良い習慣について教育を受けることもできる。良い習慣は、たとえば信用できるクライアントにしかアクセスしないことだ。OAuth は悪意あるアプリに対していかなる防御策も提供していないので、エンドユーザインストールするネイティブアプリすべての信頼性に自分で責任を負う。

さらに

クライアント開発者は、ユーザから直接に認証情報を集めるようなクライアントアプリを書くべきではなく、システムブラウザのような信用できるシステムコンポーネントにこの役目を移譲すべきだ。

基本的に言って、OAuthセキュリティガイドラインは、OAuth を利用する開発者ユーザを攻撃しようとすべきではないとか、悪いことをしてはならないと言っています。外部の開発者が悪いことをしないことに頼るというのは、正気のサービス設計者が依拠するセキュリティモデルではありません。

私の知る主要な OAuth ベースサービスはほぼすべて、ここに概説した手法で攻撃可能です。

OAuth こそセキュリティの新たな金字塔だとお考えの皆さん、目を覚ましてください! 「普通の実装における」OAuth は、始まる前から負けていますよ。OAuth が存在するよりずっと前に実装された数多くのシステムはセキュアで、この問題を効率的に回避しています。残念なことに、あまりに多くのサービスが、せっかくセキュアだったのにインセキュアな OAuth モデルに移行してきました。だれかが開発者管理者に「OAuthもっとセキュア」「先取り思考」「将来への投資」とか何とか素敵な (しかし具体性の皆無な) バズワードを並べたてたからでしょう。ほとんどの場合、こうした変更は本当に既存の問題に対応しているのか、あるいは以前のシステムより幾らかでも良くしてくれるのかどうかをレビューすることさえなく実装されています。

OAuth サービスに偽装

OAuth ベースサービス設計でよく見かける間違いは、ブラウザ用に、パラメータひとつとして client_secret (あるいは同様のもの) を受け取るエンドポイントを提供することです。OAuth の client_id と client_secret パラメータは、基本的に言ってサードパーティプラットフォーム固有の API ユーザ名とパスワードと等価ですから、EVS の API を利用する開発者だけにしか知られるべきではありません。パスワード同然のものなのですから、client_secret パラメータは「絶対に」ユーザブラウザを通して送信すべきではありません (ヒント: パラメータ名の中に secret という言葉が入っているよ)。アプリサービスユーザがその client_id と client_secret を見つけることができる場合、そのユーザはそのサービスのふりをすることができ、潜在的には何かイケナイことができてしまうということになります。さらに注意すべき点として、client_secret パラメータを別の名前にするサービスもありますから、ご自分の関係するサービスをよくチェックして、他のパラメータも秘密にする必要があるのかどうかを調べてください。残念ながら、重要な変数が自分の素性をいつも表に出しているとは限らないため、この問題は意外と多く存在しています。加えて、client_id だけ使う認証フローOAuth の上に乗せるサービスも出てくるでしょう。これには用心してください。特定の状況では、そういう client_id はまさしく client_secret 同然の働きをするのですから。

「普通の実装における」OAuth は、ウェブブラウザを使ってユーザを複数のウェブサイトに移動させるわけで、ひとつサイトから別のサイトに client_id と client_secret (あるいは同様のもの) を送ってもらう必要があります。そうやって、たとえば AFCP と EVS の間でこれらをやりとりするわけですから、ユーザブラウザの HTTP ログをモニタリングすれば、本当に見えてしまいます。これはアプリに組み込まれた独自ブラウザ各種でも、単に右クリックすれば何らかのネットワーク・ログ機能を持つ何らかの inspector にアクセスできてしまう場合などには可能です。

EVS と連携した AFCP にこの欠陥があると、AFCP に少しでもアクセス権限のある職員に本来の権限より多い権限を取得させてしまい、本来アクセスできないはずのところに許可が下りてしまう危険があります。別の例では、仮に FacebookGMail 用の OAuth エンドポイントを利用しているとして、client_id と client_secret の両方がブラウザを通して送信される場合、Facebookユーザは全員 GMail に対して Facebookのもののふりをすることができてしまうということです。

この問題は、OAuth エンドポイントユーザウェブブラウザから平文で client_secret を送ってくることを期待するときにはいつも存在します。あるいはそうする必要があると誤解した API 利用者が、埋め込むべきでないところに secret を埋め込むときもです。この脆弱性が存在している可能性が高いのは、エンドポイントが client_secret (または同等品) と redirect_uri の両方を期待する (あるいはオプションとしてでも受け付ける) 場合です。redirect_uri パラメータは、今回のケースで言うと EVS がユーザログインさせたあとでそのブラウザをどこに送るべきか指示するために使うよう設計されています。そうやって redirect_uri がエンドポイントへの転送に使われている場合、その処理はユーザブラウザで実行されることが期待されているわけです。主要な OAuth 文書はどちらも、client_secret と redirect_uri の両方をこうした用途に使うようなケースを指示したり求めたりはしていません。

ざっと検索してみたところ、残念なことに、潜在的に違反の可能性があるそういった OAuth ベース API がたくさん見つかります。GoogleOAuth の色々な利用方法を提案していますが、その中に、両方を一緒に使うことを広めるフローひとつあります:

client_secret: 開発者コンソールで取得したクライアントパスワード (Android, iOS, Chrome アプリとして登録した場合のオプション)

Citrix もこんな間違いをしています:

(略: 以下、実際に脆弱だと確認したわけではないが、secret と redirect を併記しているサイトが列挙されている。)

Google で 2 分検索しただけでこのリストができました。皆様がもうちょっと労力をかければ、ずっと多く見つかることでしょう。ただし、上記リストは、こうしたサービスのどれかが脆弱だとか、誤用しやすすぎるということを直接に示すものではありません。色々な要素があり、たとえば Zendesk は特にこのケースでは redirect_uri パラメータリダイレクトに使わないと明言していますし、アプリからエンドポイントを呼ぶときはフル機能版ブラウザではなく curl を使うべきだとさえ書いて、開発者が危険なことをするような誤解を極力避けようとしています。それでも、経験の浅い開発者はこうしたエンドポイントを独自ブラウザで読もうとするかもしれません。さらに、この組み合わせが世に出回っているというだけで開発者の警戒心が下がっていき、経験を積んだ OAuth ベースサービス開発者でさえも似たような状況で潜在的ヤバイ誤用を気にせず適用するようになってきています。特に client_secret が別の名前になって、「秘密を守る」という概念が失われている場合はそうです。

サービスがこの点に関して壊れている指標となるのは、人気のある複数の OAuth ライブラリがこのサービスでうまく動かないときです。そういうサービス一般的にいって独自の「SDK」を提供しており、サードパーティ開発者が選んだライブラリではこのフランケンシュタイン的な OAuth が使えないと苦情が来たときにはその SDK を使うよう指示します。こうしたカスタマイズは気付かれないまま進行することも多くあります。開発者の大多数は、SDK が提供されているなら、わざわざ手元のソフトで頑張らずに済ませたいと思うものですから。

この種の攻撃は前述のセキュリティ文書で「4.1.1. クライアント機密情報を取得する脅威」に分類されています。しかしサーバウェブブラウザを使用を要求し client_id と client_secret (または似た用途のもの) を同時に渡させるという具体的な攻撃パターンには一言も言及がありません。おそらく、その文書の執筆陣の予想では、こんな馬鹿げたサービスはだれも設計しないだろうし、その API を使う開発者もそれを独自のウェブブラウザや SDK で使ったりはしないだろうと思っていたのでしょう。こうした開発者OAuth の規格からバラバラに取り出した要素をグチャグチャに混ぜて接着しておいて、自分のプラットフォームOAuth 本来のセキュリティを保持していると思っています。そのツギハギのせいでどんな新しい問題が入り込むかもしれないのに、そこは一顧だにしません。残念ながら、これが近年の OAuth 業界によくあるやり方で、この既に猛威をふるっている問題は、パレード参加者がどんどん増えて、人が使っている手法や、使っている「と思う」手法をコピーしていくことで、とどまるところを知らない連鎖になっています。

おそらく、上記のサービスを使っているシステムのうち、この問題のせいで悪用可能なものは多数あることと思います。特にデスクトップアプリでは、コンパイルされたアプリバイナリから秘密情報がそのまま取り出せることは、サービス側で何も危険なことを要求していなくてもよくあります。GoogleOAuth の使い方を多数提供しているうちで、client_secret と redirect_uri を両方受け取るエンドポイントのことが書いてあるのはたったひとつだけだというのは重要な点です。少なくとも Google の場合、redirect_uri があっても、このエンドポイントウェブブラウザベースアプリには推奨していません。しかし、だからといって実際に独自ブラウザでそれを使う人や、このフロー標準的ブラウザ用のエンドポイントコピーする人が一切いなくなるはずがありません。それに加え、Google は例外なのであって、世の中にはセキュアな OAuth フローを受け入れず client_secret (や同等品) を常に渡すよう要求する愚かなサービスが今も満ちあふれており、そのフローウェブブラウザを通るときでさえも要求しているのです。さらに悪いことに、こうしたサービスの多くはユーザウェブブラウザを通して「しか」利用できないのですが、これは後ほど詳述します。

前掲のセキュリティ文書は、 Permalink | 記事への反応(3) | 12:44

2016-04-12

Cano○のプリンターはクソ

○anonのプリンターは1年ちょっとで壊れる

これに例外はない

もう3台目だが、さっき壊れた

安くて多機能だが、騙されてはいけない

1年で壊れるなんてことは仕様書には書いてないから

しかし、保証期間が切れた直後のギリギリタイミングでちょうど壊れるように設計するなんて、その技術力には感服する

2016-03-30

http://anond.hatelabo.jp/20160329165054

実費って言うか、完全に彼らのバグかもしれないのに、その調査に金がかかるとか変だなと。

立場変えたら、「完全に顧客側の勘違いにかもしれないのに、お金をかけて調査に行かないといけないなんて変だなと。」という話でしかない。

でも、今回の場合は彼らしかいじれない部分で、しかも彼らが不具合かどうかを判断するって言う状況だから、完全に足元見られたといえばそうなのかもしれないけど、以前の担当SEは快く調査してくれてただけに残念だなって感じ。

頓珍漢なこと言ってるけど、要件定義とか仕様書作成とか受入、検収諸々ちゃんとやってないだけのような。

保守契約もしてないようだし、ちゃんと反省して次から頑張れよ。

2016-03-28

http://anond.hatelabo.jp/20160328004143

実際、実装されてないものをあたかも前任者が実装済みのような体で

書かれた仕様書顧客から渡された身としては、

そんなものを寄越すなとしか言い様もなく。

×そんなものを寄越すな

○有り難うございます^^助かります~^^

2016-03-24

http://anond.hatelabo.jp/20160226093209

http://tamae.2ch.net/test/read.cgi/prog/1458688126/400 こういうキチガイと(結果的にせよ)連携してるのがQiita

400 : 仕様書無しさん2016/03/24(木) 00:38:37.28

>>399

癒しだったら良いけど、俺の場合は興奮するわwww 奴を刺激して自演を誘発し、運営処分に向かう流れ・・・・、

この流れは本当、射精にも勝る気持ちよさだ。老後もバイアグラ要らずになりそう。

2016-03-06

ランサーズキチガイ巣窟

あるPCサイトスマホ対応させるという案件を請けた。

サンプル(他人サイト)を参考にしてくれという話だったので

サーバー移管ドメイン設定、メールの設定もしてあげた上で

同じような構成サイトを作り、客が望む機能も追加してやった。

提出して1ヶ月経っても返事がないので、完了報告をしたら

サンプルとまったく違う」

「こんなもの素人でも出来る」

「だから0円にしろ

意味の分からないことを言い出した。

あのな、じゃあなんで最初から

著作権無視サンプルの丸パクリコピーを作ってください」

と指示しないのか? 馬鹿なのか?

少なくとも100時間かけて、報酬はたったの2万円。

2万円をもらったとしても、こっちは時給200円なのに

それすらも払わないだとか、もはやタダのクソゴミ乞食

仮入金という仕組みがあるのだが、客側が完了報告を承認しない限り

こちらに報酬は振り込まれないので意味がない。

ランサーズ事務局は、個人同士で解決してくれの一点張り

ロクに仕様書も作らず、なんとなくのイメージだけを伝えて

出来上がってきたら、思ってたのと違うと難癖をつけて踏み倒す手口。

素人でも出来るとのことだったので

サーバーに設定した内容はすべて消去して差し上げました。

もう代金は結構ですので、頑張って自分で復旧させてね。

さて、今日はどこかの工務店に行って

「100万円で家を建ててください、木材の原価なんてそれぐらいでしょ」

とでも言ってこようかな。

ログイン ユーザー登録
ようこそ ゲスト さん