Skip to content

Instantly share code, notes, and snippets.

Avatar

azu azu

View GitHub Profile
@azu
azu / README.md
Last active May 6, 2022
サブドメインをユーザーホスティングサイトに使うときのパターン(Same Origin/Cookie/Public Suffix List)
View README.md

サブドメインをユーザーホスティングサイトに使うときのパターン

hoge.example.com でユーザが作成したサイトをホスティングして、任意のJavaScriptを実行できる状態にしたいケース。 サブドメインを分けることで、Fetch APIなどはSame Origin Policyを基本にするため、別のサブドメインや example.com に対するリクエストなどはできなくなる。

一方で、CookieはSame Origin Policyではない。 デフォルトでは、hoge.example.com から example.com に対するCookieが設定できる。 これを利用したDoS(Cookie Bomb)やこの挙動を組み合わせた別の脆弱性に利用できる場合がある。

View ES2021...ES2022.md
@azu
azu / github-proxy-client.js
Created Mar 13, 2022 — forked from DavidWells/github-proxy-client.js
Full Github REST api in 34 lines of code
View github-proxy-client.js
/* Ultra lightweight Github REST Client */
// original inspiration via https://gist.github.com/v1vendi/75d5e5dad7a2d1ef3fcb48234e4528cb
const token = 'github-token-here'
const githubClient = generateAPI('https://api.github.com', {
headers: {
'User-Agent': 'xyz',
'Authorization': `bearer ${token}`
}
})
@azu
azu / irdor-komesan.user.js
Last active Jan 24, 2022
Greamonkey Script: irodr integrate with komesan
View irdor-komesan.user.js
// ==UserScript==
// @name irodr: komesan
// @namespace github.com/azu
// @match https://irodr.netlify.app/
// @grant none
// @version 1.0
// @author azu
// @description irodr integrate
// @run-at document-end
// ==/UserScript==
@azu
azu / commonjs-module.js
Last active Jan 12, 2022
webpack 5.66.0 add library type: commonjs-static
View commonjs-module.js
"use strict";
var __webpack_require__ = {
d: (_, e) => {
for (var r in e) __webpack_require__.o(e, r) && !__webpack_require__.o(_, r) && Object.defineProperty(_, r, {
enumerable: !0,
get: e[r]
})
}, o: (_, e) => Object.prototype.hasOwnProperty.call(_, e), r: _ => {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(_, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(_, "__esModule", { value: !0 })
}
View useHistoryState.ts
type HistoryState = unknown; /* state object */
const useHistoryState = (defaultState: HistoryState) => {
const STACK_SIZE_LIMIT = 20;
const [currentState, setCurrentState] = useState<HistoryState>(defaultState);
const [undoStack, setUndoStack] = useState<HistoryState[]>([]);
const [redoStack, setRedoStack] = useState<HistoryState[]>([]);
const canUndo = useMemo(() => undoStack.length > 0, [undoStack.length]);
const canRedo = useMemo(() => redoStack.length > 0, [redoStack.length]);
const pushState = useCallback((item: HistoryState) => {
setCurrentState(item);
@azu
azu / 0.memory-note.md
Last active Sep 27, 2021
Memory Noteの開発メモ
View 0.memory-note.md

目的

  • いつでも入力
  • いつでも見れる
  • とにかく早い、ストレスフリー
  • 30分とか枠を用意してそこにメモを書くのが良さそう

なぜ

  • 人の脳の容量はでかいが、記憶のスタックが小さい(疑似)
@azu
azu / furusato-tax.jp: price * 0.2.user.js
Last active Aug 8, 2021
furusato-tax.jpの表示金額に2割の表示を追加するGreasemonkeyスクリプト
View furusato-tax.jp: price * 0.2.user.js
// ==UserScript==
// @name furusato-tax.jp: price * 0.2
// @namespace furusato-tax.jpの表示金額に2割の表示を追加する
// @match https://www.furusato-tax.jp/*
// @grant none
// @version 1.0
// @author -
// @description 2021/8/8 12:08:48
// @run-at document-end
// ==/UserScript==
@azu
azu / get-domain.js
Last active Jun 24, 2021
Get domain(site) from url using document.cookie hacking. without public suffix
View get-domain.js
const isSite = (domain) => {
console.log(domain)
const key = "WILL_BE_FIRED." + 'xxxx-xxxx-xxx-xxxx'.replace(/[x]/g, (c) => {
const r = Math.floor(Math.random() * 16);
return r.toString(16);
});
document.cookie = `${key}=1; domain=${domain}; samesite`;
// Test wrinting
console.log("document.cookie", document.cookie)
const canWrite = document.cookie.includes(`${key}=1`);
@azu
azu / 英語 文書 翻訳 読む ツール まとめ.md
Last active Jun 23, 2021
英語の文書を翻訳して読むときのツールのまとめ
View 英語 文書 翻訳 読む ツール まとめ.md