This JavaScript code powers a 1,500 user intranet application : programminghorror

Press J to jump to the feed. Press question mark to learn the rest of the keyboard shortcuts

記事へジャンプ

みんなの反応

はてなブックマークでの反応
1ginpei@hatena 2018/08/11 02:11
問題のありすぎるログイン実装コード。多すぎてどこから言及したものか。問題点をいくつ見つけられるかのクイズって感じだ。
2takutakuma@hatena 2018/08/11 04:15
読んでて辛いコードだ。
3ch0ge@hatena 2018/08/11 04:44
something about if ("true" === "true") speaks to me on a spiritual level
4msrm@hatena 2018/08/11 06:34
<!-- todo: put this in a different file!!! --> 正気か
5nati_ueno@hatena 2018/08/11 07:14
Hashしてないパスワードを全件取得。生のSQLを無認証で受付。認証済みクッキーの値がyes. 無駄な制御文。他にはあるかな
6t_yamada8karad@hatena 2018/08/11 07:30
“if ("true" === "true") { return false; }” ワロタ
7nkgr@hatena 2018/08/11 08:53
これ、クライアントJSか。if trueも面白いけど、apiにsqlそのまま食わせるとか、認証普通に入力値とそのまま比較するとか突っ込みどころ満載だ。 ってかなんで2017の記事がいまさら?
8OkadaHiroshi@hatena 2018/08/11 09:16
こういうコードが存在するなら、世の中でパスワードか漏洩する事故が多発するのも無理はない。
9builtinnya@hatena 2018/08/11 09:19
SQL Injection が起きても問題ないコード。自分で Injection してるから。パスワードをハッシュしてないのもポイント高い
10cl-gaku@hatena 2018/08/11 09:27
全件取得しちゃうか
11Nfm4yxnW8@hatena 2018/08/11 09:50
可能な限り脆弱性を盛り込んだコードゴルフ
12solidstatesociety@hatena 2018/08/11 09:51
Yes! Cookie!🍪
13ymm1x@hatena 2018/08/11 09:52
たった数行のコードにいくつものドラマがある
14td2sk@hatena 2018/08/11 10:02
最大の問題点がアレすぎて、パスワードをハッシュ化してないとかのよくある指摘が霞むレベル
15ptpadan@hatena 2018/08/11 11:00
どこを突っ込めばいいのかわからくなってしまうコード。。。
16rgfx@hatena 2018/08/11 11:36
via: https://twitter.com/hassy_nz/status/1027890455940198400
17wow64@hatena 2018/08/11 12:06
jsがどうこうより生sql通せるapiの設計が凄すぎる
18ktakeda47@hatena 2018/08/11 13:04
感動した😂
19mexxx@hatena 2018/08/11 13:12
イントラネットということは新入社員の研修に作ったんじゃないの。俺の職場でも新人が作ったっぽいクソみたいなシステムで勤怠つけさせられて地獄だった。
20oldriver@hatena 2018/08/11 13:24
これTwitterのTLに流れてきて、JSだと書いてなかったので、「ああwhere句無しかよ」「なんだこのfalseの返し方w」「言語何だろう?」「え?クライアント?」「ウワー!」というアハ体験をさせてもらった。
21kazoo_oo@hatena 2018/08/11 13:58
1500 applications じゃなくてよかった。
22Hiroto-K@hatena 2018/08/11 14:17
サーバー側かと思ったらクライアント側なのか… / パスワードを忘れたらデベロッパーツールから探せばいい親切設計
23tenkoma@hatena 2018/08/11 14:21
すご!バックエンドのプログラマの工数を減らしてアプリがつくれちゃう!(違
24marisatokinoko@hatena 2018/08/11 14:46
sqlのように見えるけど独自のDSLだからここから推測できるのはせいぜい全ユーザーのIDパスワードが見える程度(混乱)
25kijtra@hatena 2018/08/11 15:09
イントラネットだから何か起きたら1500人全員を問い詰めればいい、てことかなw
26cpw@hatena 2018/08/11 15:43
最初のSQL実行の部分がおかしい。APIに投げてるなら戻り値はPromiseかundefinedだから動作しないと思う / 追記:XMLHttpRequestに同期モードなるものがあることを知った。このコードからも学ぶことがあった。
27june29@hatena 2018/08/11 15:45
ドラマチックだ。
28uva@hatena 2018/08/11 15:49
おもしろ
29hevohevo@hatena 2018/08/11 16:29
DBから全ユーザーデータ取り出して先頭ユーザーから順番に照合していくところでニヤリと笑ってしまった。しかもこれ生パスワードDBに保存してるよね
30renos@hatena 2018/08/11 16:52
SAN値がけずられるコードだ…
31wats2012@hatena 2018/08/11 17:20
これじゃパスワード流出しちゃうからセキュアなコード書いた → function authenticateUser(username, password) { return true; }
32proverb@hatena 2018/08/11 21:44
ロックだ
33Chinosoko@hatena 2018/08/11 23:02
AjaSQLてのを思い出したけど、apiService.sqlは「別途取得済みの情報を取り出してるだけ」でないと使われ方と辻褄が合わない。良かった。任意のクエリを実行できるAPIはなかったんだ。パスワード漏れだけなら、致命傷で済む
34shinagaki@hatena 2018/08/13 13:18
forは逆順にしたほうが、次第にアホなことやってるって気づくんじゃないかな?
35causeless@hatena 2018/08/15 11:56
"@hassy_nz 世界最悪のログイン処理コード。 実際のサービスで可動していたものだとか…… https://t.co/EfVNAEsl…" via https://twitter.com/hassy_nz/status/1027890455940198400
コメント内容の著作権は、投稿者に帰属します。
削除依頼、不適切コメントのご連絡はこちらにお願いいたします。
2018-08-10 18:54:01:1533894841:1534410927
comments powered by Disqus
※メールアドレスは公開されません。
人気の反応