Tag Archives: js

在 CloudFront 的 edge 上跑 Lambda

所以 Amazon CloudFront 讓使用者在 edge 上跑程式了 (雖然目前是 limited preview):「Lambda@Edge – Preview」。 分成 Viewer Request、Origin Request、Origin Response 以及 Viewer Response 四個階段可以插入修改。另外有些限制: Because your JavaScript code will be part of the request/response path, it must be lean, mean, and self-contained. It cannot … Continue reading

Posted in AWS, CDN, Cloud, Computer, Murmuring, Network, Programming, WWW | Tagged , , , , , , , , , , | Leave a comment

利用上傳的檔案跳過 CSP 限制

用 CSP 可以做到一些簡單的保護機制,但在設計不良的情況下還是有辦法繞過。 這次是上傳合法的 JPEG 檔案,但當作 javascript 檔案繞過去:「Bypassing CSP using polyglot JPEGs」。 開頭的「FF D8 FF E0」可以在「List of file signatures」這邊看到是「JPEG raw or in the JFIF or Exif file format」,而這四個字元在 javascript 不會出問題。接下來的「2F 2A」表示 JPEG header 長度,剛好就是「/*」,把後面的東西給包起來,後面再用類似的方式一直組合就打穿了... 這種攻擊要跳過的是「用 CSP 的 self 限制不能引用外部網站 javascript」的限制,但還是有些前提: … Continue reading

Posted in Computer, Murmuring, Network, Security, WWW | Tagged , , , , , , , , , , | Leave a comment

把所有 HTTP 網站的 JavaScript 都關閉

一直以為 Google Chrome 的 [*.] 只能用在開頭,剛剛測了才發現可以用在中間,所以就用這樣的方式擋下 HTTP 網站的 JavaScript: http://[*.] 這樣就可以減少 HTTP request 被 hijack 插入 javascript 的問題...

Posted in Browser, Computer, GoogleChrome, Murmuring, Network, Security, Software, WWW | Tagged , , , , , , , | Leave a comment

CloudFront 支援將 Query String 內的特定 Key/Value 當作 Cache Key 的一部分

Amazon CloudFront 可以指定 query string 中的某個特定的 key/value 當做 cache key 的一部分了:「Announcing Query String Whitelisting for Amazon CloudFront」,對應的文件在「Configuring CloudFront to Cache Based on Query String Parameters」這邊可以查到。 先前只能針對選擇忽略掉整個 query string,或是把整個 query string 當作 cache key 的一部分,現在可以細部調整了。 最簡單的應用可以用在 css/js 的 asset 上,針對 v=\d+ … Continue reading

Posted in AWS, CDN, Cloud, Computer, Murmuring, Network, WWW | Tagged , , , , , , , , , , , , , , | Leave a comment

把 JavaScript 關閉一個月後的其他感想

一個月前我決定把瀏覽器的 JavaScript 預設關掉:「把 Google Chrome 預設的 JavaScript 關閉,開白名單...」,包括後來「改用 Simple JavaScript Toggle 切換 Google Chrome 的 JavaScript」試著找出快速暫時性切換的方案。 跑了這一個月下來,就好處來說,在一個月前的文章就有提到了,到是遇到不少問題 (然後找到各種方法解掉)。 主要的問題是電子商務網站幾乎都不會動 (包括信用卡刷卡網站),尤其是刷卡階段常用 HTTP POST,沒辦法靠 Simple JavaScript Toggle 在失敗時切過去 (會被刷卡系統偵測到重複送出而擋下),必須設白名單避免問題。 另外是愈來愈多內容性質的網站再沒有 JavaScript 下就不會動,不過這種性質的網站在 Google Chrome 上可以靠 Readability 來解決,還順便把版面給搞定了,不算是什麼大問題。 應該會繼續用下去...

Posted in Browser, Computer, GoogleChrome, Murmuring, Network, Security, Software, WWW | Tagged , , , , , , , , , , | 1 Comment

JavaScript^WjQuery 3.0!

jQuery 3.0 出版了,不過也沒什麼關注度了:「jQuery 3.0 Final Released!」。 就功能而言已經進入 maintenance mode 了...

Posted in Computer, Murmuring, Programming, Software | Tagged , , , | 1 Comment

在 Python 的 pip、Nodejs 的 npm、Ruby 的 RubyGems 上面放木馬研究?

在 Python 領域裡常用 pip 安裝軟體: $ pip install reqeusts 或是: $ sudo pip install reqeusts 其他的平台也大致類似於這樣的動作。而在「Typosquatting programming language package managers」這篇文章裡,作者用 typo 之類的方式列出可能的名稱,像是這樣的名稱: $ sudo pip install reqeusts 然後在這三個平台上發動攻擊,上傳了數百個套件並且觀察: All in all, I created over 200 such packages and equipped them … Continue reading

Posted in Computer, Murmuring, Network, Programming, Security, Software | Tagged , , , , , , , , , , , , , | Leave a comment

在這個純 CSS 技巧被遺忘的年代,許多可以用 CSS 就做到的效果...

在「You Don't Need JavaScript for That!」這邊看到好多讓人懷念的技巧,用純 css 做到很多動態效果 (現在 browser 對 css 的支援比以前好很多,這些技巧應該都沒問題了): Tooltips Dropdown menu Toggle Visibility 以前前端的人會講 accessibility,不過現在好像沒 javascript 就沒人權了...

Posted in Browser, Computer, CSS, Murmuring, Network, Programming, Software, WWW | Tagged , , , | Leave a comment

簡易的 jQuery CSS Selector 替代品

在追 refined-twitter 程式碼的時候,在「refined-twitter/extension/content.js」這邊看到: const $ = document.querySelector.bind(document); 這樣就可以拿 CSS Selector 掃出元件,程式變得比較好讀... 當然,這個方式不是 fluent interface,沒辦法再依樣串下去。 用 Google 查了一些資料,看起來至少從 2013 年就有這個技巧了。

Posted in Computer, CSS, Murmuring, Network, Programming, Software, WWW | Tagged , , , , , , | 1 Comment

用 JavaScript 寫的 NLP Library

nlp-compromise/nlp_compromise 是一個 JavaScript 寫的 NLP library,網頁上給的用法也很特別... 過去式: nlp.text('She sells seashells').to_past() // She sold seashells 複數形: nlp.noun("dinosaur").pluralize(); // "dinosaurs" 還有這種用法: nlp.statement('She sells seashells').negate().text() // She doesn't sell seashells 也有這種用法: nlp.sentence('I fed the dog').replace('the [Noun]', 'the cat').text() // I fed the cat … Continue reading

Posted in Computer, Murmuring, Programming, Science, Social, Software | Tagged , , , , , | Leave a comment