国税庁のWeb確定申告書作成システム、作ってみたら他人の申告書 121
ストーリー by Oliver
初歩的すぎる 部門より
初歩的すぎる 部門より
Anonymous Coward曰く、"国税庁が昨年1月に開始したWeb上の 確定申告書作成システム(停止中)で申告書を作成し印刷したところ、他人の申告書が印刷されるという御粗末なトラブルが発覚した。このシステムはWeb上の入力画面に必要事項を入力するとサーバ側から申告書の画像が返り、そのまま印刷すると申告書に使えるというもの。ところが、香川県の納税者の申告書に愛知県の人の住所・氏名や申告内容が記載されるなど、情報の流出が判明したとのこと。原因は「 他人の申告書を受け取った人と、申告書が流出した人は同時に印刷ボタンを 押していた。本来はサーバーがデータを受け取った順に利用者に返すが、同時に受け取ったため最初のデータに後のデータが上書きされた可能性が高いという。」ということのようだ。記事では計4件の流出が判明とのことだが、もっと多い可能性がありそうだ。"
この場合・・ (スコア:3, 興味深い)
Webアプリケーション開発者にとっては
知っていて当然なセッション管理と言う対策を
怠った開発者ですか?それとも、中途半端なテストで、
公開した「国税庁」の職員ですか?
office氏の件と混同しちゃいけないけど、
当たり前の対策をしていない=個人情報が漏れて当然
な場合では、誰も逮捕されないのかなぁ・・と・・。
Re:この場合・・ (スコア:5, おもしろおかしい)
#ありえないのでAC
Re:この場合・・ (スコア:2, おもしろおかしい)
間抜けが設置した罠はなんと呼ぶのでしょう。
……セキュリティホール……?
Re:この場合・・ (スコア:1, おもしろおかしい)
不正アクセス防止法違反と威力業務妨害の容疑で。
Re:この場合・・ (スコア:1, おもしろおかしい)
犯人逮捕に協力したとして感謝状が送られます。
Re:この場合・・ (スコア:1, すばらしい洞察)
不正アクセス防止法違反でしょっ引かれて、
他人の税金も納めるハメになります。
# ror/s - fly を聴きながらなのでAC
同じだよ (スコア:1, 興味深い)
別件・・・(Re:この場合・・) (スコア:1)
Office氏、国税庁Webの別のセキュリティ問題を指摘してたよな
中の人(関係ないはずの部署のえらい人)に「突っ込みいれたら」と
言ったけどその後どうなったんだろう?
# 全く外の人だけど中の人に知り合いが多いのでAC
Re:ネタだとは思うけど (スコア:2, すばらしい洞察)
「逮捕される(責任がある)のは誰だ?」
という点は興味深いと思うのだけれど
# 色々な形で責任とらされる人は居ると思うけどね
単なる事故 という常識(?)の方が揺らいでいるんですよ
# とさらにマジレスを続けてみる
あ~ (スコア:2, 参考になる)
ミスを侵したって訳ね。
まともに試験してれば検出できるはずの初歩的な奴なので、
それもやっていなかったのでしょうね。
よほどお粗末なところに発注したのか、デスマーチで
エキスパートが試験にまで手が回らなかったのか。。。
# こないだ同じ実装した外注をPJから叩き出したばかりだよ。
wild wild computing
Re:あ~ (スコア:1)
こればっかやってて、本人になんの知識も技術も無い事が判明したから
です。
# 経歴詐称なんだけどなぁ。。。
ライセンス的に問題なくて、内容を理解して
自分で責任持てれば別にパクり自体が悪いとはいわないけど。
「コピーしただけなのでわかりません」とか
コピー元が無い=実装不能 な奴が多すぎ。
wild wild computing
Re:あ~ (スコア:1, 興味深い)
で、それでも何とか仕事を取りたいから、経歴詐称&ダンピング合戦です。それも多少違うとか、そういうレベルではなく根本的なレベルでやる会社すらもある。
だから、最近は受け入れ側も面接でなるべくチェック入れ、あまりにも引っかかる奴が多発する会社は、会社ごと追い出す所もあるそうですよ。
まあ、そういう会社は、今後中国人とかインド人が増えてくれば淘汰されていくだろうし。
#自分の会社も追い出されたのでAC
Re:あ~ (スコア:1, 参考になる)
- synchronizedという修飾子は見たことがありますか?
- 「Singletonで同期化したDBアクセサです」と言われてイメージがわきますか?
- デザインパターンわかりますか?
正直、全部余裕でわかりますと答えた人はひとりもいない。
どう言うこっちゃ。前、この質問をするのを忘れて雇った人は、
2年のJava経験なのにnewでインスタンス化することを知らなかった。
どうやってコード書いてたのか想像もつかん。脳波で書ける
ツールでもあるのかと。
>中国人とかインド人
技術もあるし層も厚いんだけど、納期の守り方と
あと一番大きいのはコミュニケーションなんだよなぁ。
日本人の外注だと2週間かかる仕事を1週間でやってくれるんだが、
日本人だと3日で理解できる仕様の理解に2週間かかる。
まあ、こっちの伝え方が悪いんだろうけど。
ああ、よかったー (スコア:2, 興味深い)
あまりにPCとかインターネットが安価に広まってしまったものだから、この手のシステムの裏側でいかに苦労している人が多いのか、どんな仕事がされているのか、ということを、一般の人は知らないんですよね。
ソフト開発の現場ではどのような仕事をしているのか?ということを、もっともっと多くの人に知ってもらいたいです。そうしないと、同じような事例はこれからも増えて行くと思う。
Re:ああ、よかったー (スコア:3, おもしろおかしい)
>ということを、もっともっと多くの人に知ってもらいたいです。
そんな事したら、この業界に入る人が激減するじゃないですか!
--- (´-`)。oO(平和な日常は私を鈍くする) ---
え…? (スコア:1)
Re:え…? (スコア:2, 興味深い)
とはいえ、まともなセッション管理が実装されていれば、その
情報を使って一意にするなり排他するなりできますもんねえ。
というわけで、まともにやっていない、に一票入れたいっす。
#セッション管理をするほど重要な情報なんですか?という事を平気で
#言うソフトハウスも多い。。。私も怒鳴りましたが。
みんつ
Re:え…? (スコア:1)
それが同時だと同一になってしまうのかと思ったのですが。
作成した後、送り出すまでにタイムラグがあって、
その間にファイルが更新されてもそのまま送ってしまうとか。
# いくらなんでもそりゃ無いか...
--------------------
/* SHADOWFIRE */
Re:え…? (スコア:2, 参考になる)
私が昔そういうのを作った時に、volatile変数でlock掛けてテンポラリファイル名重複チェックしていたんですが、複数のWebApplicationServerでネットワークファイルを共有されて、しっかりファイル名が重複してしまったことがあります。
ディレクトリを別にして貰うことで解決しましたが、速度優先でという要求に応えようとしたのが仇になってしまった例。
信頼性優先ならlock file作るので、ディレクトリ共有されてても問題なかったでしょうけど....。
Re:え…? (スコア:1)
# 昔それで情報流出するバグを見たことがあるID
Re:え…? (スコア:1)
具体的にはどのようなバグだったのでしょう?
May the source be with you... always.
Re:え…? (スコア:2, おもしろおかしい)
ぱっと思いついたありがちな理由は、 Servletで何も考えずにフィールドを作っちゃった [atmarkit.co.jp] 。他にもいろいろありそうですが。
Re:え…? (スコア:2, 参考になる)
Servletと「アプリ」とを等価だと思ったら嵌まりますよね。
Servletは結局、状態を持たないようにコーディングするのがお洒落つーかマトモ。
状態は、Sessionにぶら下げるカタチで別途用意したオブジェクトに、持たせるべき。
デスクトップ(^^;アプリはメモリ上に実行コードと状態とが一対一で存在する
(厳密には違うのかも知れないが、OSがメモリマップによってそれを隠蔽する)
わけだけど、Servlet方式だと1つのコードに対してProcess(==Session)じみた状態が複数つくことになる。
なので、所謂状態はServlet(==コード)に持たせてはいけない、という配分をするのが、自然なOOデザイン。
あと、同じような心配は、バック(?)のDBのほうのSessionについてもいえそうです。
ん。JDBC風にいえばConnectionかな。
少なくとも一人(1Session)につき排他的に1つのConnectionが
DB系の処理をしてる瞬間には割り当てられていないとならん。
あと、中間ファイルにも充分気をつけないとね。
てーか、出来るだけ中間ファイルを作らないのが吉。
Sessionとかのメモリ上のものは「無名」で作れるけど、
ファイルは(現代の普通のOSでは)「無名」に出来ないので、
排他制御のために名前の管理をもしないとならなくなる。
たるい。
#forkやpopenを知らないばっかりに中間ファイルを作る、ってのは寒いので勉強して欲しいからG7
Re:え…? (スコア:2, 興味深い)
実装してる人が、なんとなくでスタティックな変数を使ってみたり
とかあるわけですな。それは設計じゃどうしようもないなぁ。
そこまでのスケルトン作るわけにもいかないし。
やっぱ全行チェックしかないかな…。
May the source be with you... always.
Re:え…? (スコア:1)
もうどうしようもなかったんで、SingleThreadModelをimplementして逃げました。
norimu
Re:え…? (スコア:1)
まさかグローバル変数に格納・・?
Re:え…? (スコア:2, すばらしい洞察)
何ひとつ調べも考えもせず反射的に教えてというのと
この元発言(本人はこうだろうと自分で考えた上で
識者に判断を求めている)は違うと思いますよ。
別に失礼な聞き方をしているともおもいませんし、
それほど問題のある態度とも思いません。
教えてくれと言われたらなんでも自分で調べろって
いうのはちょっと独善的だと思うのですが。
もちろんあなたが教えてあげなければいけない義務は
ないですから教えるのがいやならほっておけばいいん
ですが、それなら単に何もいわなければいいのです。
Re:え…? (スコア:1, 参考になる)
素人が技術的な用語を調べたってそうそう完全に解るものでもないですよ。今回の話題において「そうです」「ちがいます」程度の判断は「教えて君マズー」なコメントに加えて書いても労力にはならないんでない?
元の質問に対しては「この文脈ではその考えで問題ないと思います」
最新流行は (スコア:1)
# わかんなかったら、わかんないって言え~
Copyright (c) 2001-2014 Parsley, All rights reserved.
Re:最新流行は (スコア:1)
「ほんとはもっと少いけど、一億件ほど流出したかもしれない」
といってやれ。
wild wild computing
ありえねぇ・・・ (スコア:1)
面倒を避けて、PDFを印刷させて利用するというかなり
ひよった仕様になっているにもかかわらずこのバグ。
・・・・普通設計した段階で気付くだろ!
同時に使って何かが上書きされるって、別々のセッションの処理
であるにもかかわらず、同じワーキングエリアを使った・・と。
マルチスレッドで動くシステムの設計を一から勉強しなおしてください。
# 昔、BASICで同じ変数を別の場所で使っていた経験を思い出したなぁ・・・・
# 入れ子のfor 文が終わらなかったり・・・・
Re:ありえねぇ・・・ (スコア:2, 参考になる)
それに気付かない(気付けない)、職業不適合者がこの業界にゴロゴロしてませんか?
ありそうな話(もちろん想像) (スコア:1)
若手:「これだと他人の申告書がプリントアウトかもしれませんけど、いいんですかね」
上司:「いいんだよ、仕様書どおり作っておけば。それで問題が起こったって、設計か元請の責任なんだから」
---- * ---- * ----
趣旨・目的を無視して、「言われたことを言われたとおりにやればいい」と考える奴らが増えたと思う今日この頃。
Re:ありえねぇ・・・ (スコア:2, すばらしい洞察)
設計してなかったに1ガバス
Re:ありえねぇ・・・ (スコア:1)
すんません、脳内補完で勝手にPDFにしてました。
嘘です。
Re:ありえねぇ・・・ (スコア:1)
大丈夫なように設計したしテストも終わってるということですが、
今回は何故か”2人同時に印刷ボタンを押すと”他人のデータが
でてくるようになってた ということで流出したそうです。
この理由付けが後からの言い訳的付け足しで無ければどんな理由
なんでしょうねぇ・・・教えて!偉い人。
Re:ありえねぇ・・・ (スコア:2, すばらしい洞察)
ちゃんと10人分出た。
で、2人同時にボタンを押して違うプリンターからだすと
他人のが出てきた。
#多分こんなところじゃないかと想像してみる。
Re:ありえねぇ・・・ (スコア:1)
「敵は海賊・A級の敵」を思い出してしまいました。まるで「バズーカ砲には耐えられても木の棒でぶん殴ったら壊れる装甲服」だ。
今回は「同時押しが10人なら大丈夫だけど2人だとまともに動かないコード」だったんですかね(と嫌味を言ってみる)。
想像ですが (スコア:1)
実運用は2wayとか4wayとか
#ホントの意味で同時に動きませんから > 1way
Re:ありえねぇ・・・ (スコア:1)
で、オーバーした1人が他の誰かとかぶった。
…まさかね
# ACなのでAC
Re:ありえねぇ・・・ (スコア:1)
そんな人が設計しているわけないです。
所詮客の言ってることをそのまま下に伝えててるだけですし。
(逆にそういうことがわかる人は疎んじられる)
Re:ありえねぇ・・・ (スコア:1)
自称OOPオタとして一言。
こういう問題を解決(?)するキーワードは「一対多」「多対多」です。
UMLのクラス図でいえば「*」を書く、あの場面です。
つまり、ナニとナニとが一対多(や多対多)関係なのか?を、きちっと押さえること、です。
それが出来なければ、少なくと鯖サイドのソフトは、絶対作るの無理っす。
個人的体験に基づく印象としては、
なんてーか「処理する」ことしか頭にないDQNは、しばしば居ますね。
そういう輩にナニが欠けてるかってーと、
「処理される対象」への配慮です。
だから、処理されるモノの個数の配分を、誤ったりしても(実際トラブるまで)気付かない。
#無理矢理喩えるなら、授業してる教師が、授業を受けてる生徒の数も確認してない、みたいな??
なお、対象ってのは、OOPでいえば「オブジェクト」です。
オブジェクトを、処理「される対象」だと見るところが、OOPの第一歩です。
そうすれば、まず、その個数が旨く配分されてるかどうか?とかが(ちょっと考えるだけで)判るでしょ、ってこと。
#クラス図や継承や隠蔽なんて二の次であり、基本でもなんでもないです。
#あんなもんをさも基本中の基本みたいに教えるのはDQN教科書です。
----
なお、デザインパターンは新しいものじゃないらしいですが(^^;、
DQNにとっては新しいものです。
つまり、知らない人は知らないんだから、
(たとえそれがデザパタのであろうと)教科書読んで、
もし知らないことが有れば、その時点で勉強すればいいんです。
というわけで、結城さんのマルチスレッド版デザパタの本、いいですよ。
俺もマルチについてはDQNくさいんで、精進しようとしてるところ。
これが、電子自治体です。 (スコア:1, 参考になる)
「住基ネットICカード+公的個人認証」を準備しても個人情報は
抜けてしまうので、根本的に考え直す必要ありですね。
安全のため (スコア:1)
#市販の3月な某会計ソフト使ってます。毎年上納金を納めにゃなりませんが税理士を頼むよりは安上がり。フリーソフトでもできはしますが、毎年のように細かく変わる(天下り先の仕事作りと思われる)仕様変更に対処するのが辛いので。ヘタレと呼ばれかねんけど、会計は本業じゃないのでそれくらいは楽させて~☆
そもそも何でオンラインでデータ送るの? (スコア:1)
あるだろうから、オンラインで配布というのはいいと思います。
が、入力されたデータを計算してプリント可能な状態にして
出力するのは、別にいちいちサーバーまで送信してそちらで
やらなくてもローカル環境でもできるのではないかと
思うのですが、どうなんでしょうか。
システム見てないから分からないけど、ブラウザさえあれば
どんな環境でも実行できるのが強みだったとか?
セッション管理すらできてないようなプログラムだから
マルチプラットフォームなんて夢のまた夢かですかね。
もしかして、サーバーに送られたデータが裏で何かに使われてる? とか妄想したりして。
自己レス。 (スコア:1)
Webシステムなんだからフォームでデータをpostして
結果を返すわけですね。ActiveXとかJavaとかFlashで
フロントエンド作ってあるような妄想で頭がごっちゃに
なってました(激汗)
Re:自己レス。 (スコア:1)
Re:確定申告書作成システム(停止中) (スコア:2)
株式譲渡益が20万円以上あれば申告すると思います。
医療費がかさんでいたりしても。
年収が2000万円無くても、還付申告などきっかけはあるかと。
まあ、国としては国民に貰い損してもらおうというスタンスに
受け取れますし、税や年金について賢くなられても困るような
印象を受けるので、サラリーマンで確定申告はまだ少ないまま
のような気がします。
去年は益が小さかったので申告はしません。
やはり、特定口座で「源泉徴収無し」が基本でしょう。
# ボーナス消化中
収入少なくても確定申告してます (スコア:2, 参考になる)
年収が103万円に満たないため,バイト代から源泉徴収された
所得税が全額戻ってきますんで.
Re:アドレスバー (スコア:1)
そこにjavascript打ち込んでどうにかしてます。
めんどくさいですが。
アドレスバーとか消すコンテンツを作っている人>無駄な抵抗はやめてください。
1を聞いて0を知れ!