![こんにちは。株式会社Flatt Securityセキュリティエンジニアの村上です。セキュリティ・キャンプ卒業後、新卒入社組としてFlatt Securityでセキュリティエンジニアをしています。 本稿では、BtoCのWebサービスにおいてマーケティング施策として頻繁に発行される「クーポンコード」及び「クーポン機能」のセキュリティ観点について考えたいと思います。様々なサービスが題材として考えられますが、今回はECサイトなどを例に解説していきます。 クーポン機能は割引やポイントの付与など直接的に金銭的な影響に繋がりますが、Googleなどで検索してみると分かる通りどのような対策をすれば良いのかとい…]()
そのクーポン機能は不正利用を防げる実装ですか? - Webサービスにおけるクーポン機能の仕様とセキュリティ観点 - Flatt Security Blog
2022-04-06 14:00:54
![...]()
最近のランディングページで見かける! スクロールに連動して背景画像をアニメーション化できるバニラJavaScriptのライブラリ -ScrollMovie.js | コリス
2022-04-06 14:00:52
![]()
Re: 僕らを縛る Node.js という呪いについて - あるいはなぜ TypeScript 以外が真っ当な選択肢にならなかったか
2022-04-06 14:00:23
![Release of Rome Formatter, a super fast formatter for JavaScript and TypeScript]()
Announcing Rome Formatter
2022-04-06 11:08:14
![NW X Security-JAWSの冒頭、レイヤー1/2の担当としてセッションを展開したのが、エクイニクス・ジャパンの内田武志さん。]()
ASCII.jp:エクイニクス、「日本一AWSに近い場所」について濃い目に語る
2022-04-06 11:08:10
![]()
Amazon EC2 で、作成から 2 年を経過したパブリック Amazon マシンイメージ (AMI) を非奨励化
2022-04-06 11:08:08
![With this PR we introduce optional declaration site variance annotations for type parameters of classes, interfaces and type aliases. Annotations take the form of an in and/or out keyword immediately preceding the type parameter name in a type parameter declaration. An out annotation indicates that a type parameter is covariant. An in annotation indicates that a type parameter is contravariant. An in out annotation indicates that a type parameter is invariant. Generally, type parameter variance is simply a function of how a type parameter is used in its generic subject type. Indeed, when generic type instantiations are related structurally, variance annotations serve no purpose. This is why TypeScript strictly doesn't need variance annotations. However, variance annotations are useful to assert desired type relations of their subject generic types. Specifically, given a generic type G<T> and any two type arguments Super and Sub for which Sub is a subtype of Super, if T is covariant (declared as out T), G<Sub> is a subtype of G<Super>, if T is contravariant (declared as in T), G<Super> is a subtype of G<Sub>, and if T is invariant (declared as in out T), neither G<Super> nor G<Sub> is a subtype of the other. Intuitively, covariance restricts a type parameter to output (read) positions and contravariance restricts a type parameter to input (write) positions--hence the in and out modifiers. For example: type Provider<out T> = () => T; type Consumer<in T> = (x: T) => void; type Mapper<in T, out U> = (x: T) => U; type Processor<in out T> = (x: T) => T; Covariance and contravariance annotations are checked by structurally relating representative instantiations of their subject generic types. For example, in the following generic type, the type parameter T is used in both input and output positions and T is thus invariant. Attempting to mark T covariant type Foo<out T> = { x: T; f: (x: T) => void; } reports the following error on out T: Type 'Foo<sub-T>' is not assignable to type 'Foo<super-T>' as implied by variance annotation. Types of property 'f' are incompatible. Type '(x: sub-T) => void' is not assignable to type '(x: super-T) => void'. Types of parameters 'x' and 'x' are incompatible. Type 'super-T' is not assignable to type 'sub-T'. Likewise, attempting to mark T contravariant type Foo<in T> = { x: T; f: (x: T) => void; } reports the following error on in T: Type 'Foo<super-T>' is not assignable to type 'Foo<sub-T>' as implied by variance annotation. Types of property 'x' are incompatible. Type 'super-T' is not assignable to type 'sub-T'. Notice how the error elaborations reveal where and how variance is breached. Invariance annotations (in out T) are never checked but simply assumed to hold. Thus, it is possible to assert invariance even when the actual usage of a type parameter is co- or contravariant. When multiple interface declarations are merged, or when a class declaration and one or more interface declarations are merged, variance annotations are aggregated. In the example interface Bar<T> { // ... } interface Bar<out T> { // ... } interface Bar<in T> { // ... } the aggregate variance of T is in out, and T is thus assumed to be invariant. When variance annotations are present, the type checker doesn't need to measure variance. Thus, variance annotations can help improve the performance of checking complex and interdependent types. In particular, marking a type parameter invariant means that no measurement or checking is necessary for that type parameter. In addition, variance annotation can help establish correct variance for multiple circularly dependent generic types. Specifically, when measuring variance, TypeScript limits the structural search space in order to avoid runaway recursion. In the example type Foo<T> = { x: T; f: Bar<T>; } type Bar<U> = (x: Baz<U[]>) => void; type Baz<V> = { value: Foo<V[]>; } declare let foo1: Foo<unknown>; declare let foo2: Foo<string>; foo1 = foo2; // Should be an error but isn't foo2 = foo1; // Error the compiler measures T to be covariant even though it is actually invariant due to variance reversal in Bar and the circular reference in Baz. The compiler could establish that by continuing to structurally relating nested circular references until some fixed point, but this gets exponentially expensive and isn't feasible in complex scenarios. Adding an in out annotation to T establishes the correct variance and produces the expected errors. We're marking #1394 and #10717 fixed by this PR, although the feature implemented isn't exactly what is suggested in those issues. Fixes #1394. Fixes #10717.]()
Optional variance annotations by ahejlsberg · Pull Request #48240 · microsoft/TypeScript · GitHub
2022-04-06 11:08:05
![]()
Androidのフレームワーク部分に深刻な脆弱性、4月のセキュリティパッチで解消 - ケータイ Watch
2022-04-06 11:08:03
![Microsoftはハイブリッドワークに関するオンラインイベントを開催し、“世界初のクラウドPC”と称する「Windows 365」と「Windows 11」の新機能を紹介した。発表されたことを簡単にまとめた。]()
Microsoftの「Windows Powers the Future of Hybrid Work」まとめ - ITmedia NEWS
2022-04-06 11:08:01
![]()
シャープの国産不織布マスクが一斉値下げ。抽選100回目を迎え - PC Watch
2022-04-06 11:02:17
![AWS が変化を求めるデベロッパーの皆様を応援するウェブマガジン。毎月更新する記事で新たなスキルや他のデベロッパーが抱える課題と解決方法に迫るインタビューをご覧いただけます。]()
Hands-on for Beginners で AWS を使いはじめよう ! 〜目的にあわせてハンズオンをおすすめします〜 - builders.flash☆ - 変化を求めるデベロッパーを応援する…
2022-04-06 11:01:33
![マイクロソフトは日本時間4月6日未明にオンラインイベント「Windows Powers the Future of Hybrid Work」を開催。ハイブリッドな働き方を支援するとして、Windows 11の新機能を発表しました。 File...]()
[速報]Windows 11のFile Explorerにタブ機能、集中作業用のタイマー機能、オンライン会議のアイコンタクト機能など新機能 - Publickey
2022-04-06 11:01:09
![Reactのベストプラクティスやコード削減のためのパターンを紹介します。全3パートの連載記事です。]()
Reactのベストプラクティスとコード削減パターン - パート1 | microCMSブログ
2022-04-06 11:01:07
![2018年モデルの13インチ MacBook Proには、Thunderbolt 3対応のUSB Type-Cポートが4つ搭載されているだけで、LANケーブルを接続するには有線LANアダプターが別途必要になります。そんな13インチMacBook Proを使っているソフトウェアエンジニアのデニス・シューベルトさんが、これまで使ってきた3つの有線LANアダプター分解した上で見えてきた問題点を解説しています。]()
MacBookで使える「USB-Cハブ付き有線LANアダプター」3種類を分解して浮かび上がった問題点とは?
2022-04-06 11:01:05
![Twitterは、編集機能のテストを開始するとツイートした。前日には筆頭株主になったイーロン・マスク氏が「編集ボタンは欲しい?」というアンケートを実施。この決定は「アンケートのせいではなく、1年前から検討していたこと」とTwitter。]()
Twitter、“編集ボタン”のテストを始めると正式ツイート - ITmedia NEWS
2022-04-06 11:01:04