CSRF, XSSI, āĻāĻŦāĻ āĻā§āϰāϏ-āĻ āϰāĻŋāĻāĻŋāύ āϤāĻĨā§āϝ āĻĢāĻžāĻāϏ āĻĒā§āϰāϤāĻŋāϰā§āϧ āĻāϰā§āύāĨ¤
āĻā§āύ āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āĻāϝāĻŧā§āĻŦ āϏāĻŽā§āĻĒāĻĻ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻŋāύā§āϤāĻž āĻāϰāĻž āĻāĻāĻŋāϤ?
āĻ āύā§āĻ āĻāϝāĻŧā§āĻŦ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻā§āϰāϏ-āĻ āϰāĻŋāĻāĻŋāύ āĻāĻā§āϰāĻŽāĻŖ āϝā§āĻŽāύ āĻā§āϰāϏ-āϏāĻžāĻāĻ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻĢā§āϰāĻāĻŋ (CSRF), āĻā§āϰāϏ-āϏāĻžāĻāĻ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāύāĻā§āϞā§āĻļāύ (XSSI), āĻāĻžāĻāĻŽāĻŋāĻ āĻ ā§āϝāĻžāĻāĻžāĻ, āĻā§āϰāϏ-āĻ āϰāĻŋāĻāĻŋāύ āĻāύāĻĢāϰāĻŽā§āĻļāύ āϞāĻŋāĻ āĻŦāĻž āĻ āύā§āĻŽāĻžāύāĻŽā§āϞāĻ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻļāύ āϏāĻžāĻāĻĄ-āĻā§āϝāĻžāύā§āϞ ( āϏā§āĻĒā§āĻāĻāĻžāϰ ) āĻāĻā§āϰāĻŽāĻŖā§āϰ āĻāύā§āϝ āĻā§āĻāĻāĻŋāĻĒā§āϰā§āĻŖāĨ¤
āĻŽā§āĻāĻžāĻĄā§āĻāĻž āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻšā§āĻĄāĻžāϰ āĻāύāϝāĻŧāύ āĻāĻĒāύāĻžāĻā§ āĻāĻ āϏāĻžāϧāĻžāϰāĻŖ āĻā§āϰāϏ-āĻ āϰāĻŋāĻāĻŋāύ āĻ ā§āϝāĻžāĻāĻžāĻāĻā§āϞāĻŋāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāĻžāύāĻā§ āϏā§āϰāĻā§āώāĻŋāϤ āĻāϰāϤ⧠āĻāĻāĻāĻŋ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āĻĄāĻŋāĻĢā§āύā§āϏ-āĻāύ-āĻĄā§āĻĒā§āĻĨ āĻŽā§āĻāĻžāύāĻŋāĻāĻŽ-āĻāĻāĻāĻŋ āϰāĻŋāϏā§āϰā§āϏ āĻāĻāϏā§āϞā§āĻļāύ āĻĒāϞāĻŋāϏāĻŋ- āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧāĨ¤
āĻāĻāĻāĻŋ āĻĒā§āϰāĻĻāϤā§āϤ āĻāϝāĻŧā§āĻŦ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĻā§āĻŦāĻžāϰāĻž āĻāύā§āĻŽā§āĻā§āϤ āϏāĻāϏā§āĻĨāĻžāύāĻā§āϞāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĻā§āĻŦāĻžāϰāĻž āϞā§āĻĄ āĻāϰāĻž āϏāĻžāϧāĻžāϰāĻŖ, āĻāĻŦāĻ āĻ āύā§āϝāĻžāύā§āϝ āĻāϝāĻŧā§āĻŦāϏāĻžāĻāĻ āĻĻā§āĻŦāĻžāϰāĻž āύāϝāĻŧāĨ¤ āĻāĻ āϧāϰāύā§āϰ āĻā§āώā§āϤā§āϰā§, āĻŽā§āĻāĻžāĻĄā§āĻāĻž āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻšā§āĻĄāĻžāϰā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻāĻāĻŋ āϰāĻŋāϏā§āϰā§āϏ āĻāĻāϏā§āϞā§āĻļāύ āĻĒāϞāĻŋāϏāĻŋ āĻŽā§āϤāĻžāϝāĻŧā§āύ āĻāϰāϤ⧠āϏāĻžāĻŽāĻžāύā§āϝ āĻĒā§āϰāĻā§āώā§āĻāĻž āϞāĻžāĻā§ āĻāĻŦāĻ āĻāĻāĻ āϏāĻŽāϝāĻŧā§ āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻāĻā§āϰāĻŽāĻŖ āĻĨā§āĻā§ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋāĻā§ āϰāĻā§āώāĻž āĻāϰā§āĨ¤
āĻŦā§āϰāĻžāĻāĻāĻžāϰ āϏāĻžāĻŽāĻā§āĻāϏā§āϝ
āϏāĻŽāϏā§āϤ āĻāϧā§āύāĻŋāĻ āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻāĻā§āĻāĻŋāύ⧠āĻŽā§āĻāĻžāĻĄā§āĻāĻž āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻšā§āĻĄāĻžāϰāĻā§āϞāĻŋ āϏāĻŽāϰā§āĻĨāĻŋāϤāĨ¤
āĻĒāĻāĻā§āĻŽāĻŋ
āĻ āύā§āĻ āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻāĻā§āϰāĻŽāĻŖ āϏāĻŽā§āĻāĻŦ āĻāĻžāϰāĻŖ āĻāϝāĻŧā§āĻŦ āĻĄāĻŋāĻĢāϞā§āĻāϰā§āĻĒā§ āĻā§āϞāĻž āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϏāĻžāϰā§āĻāĻžāϰ āϏāĻšāĻā§āĻ āĻŦāĻšāĻŋāϰāĻžāĻāϤ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĨā§āĻā§ āĻāĻĻā§āĻā§āϤ āϝā§āĻāĻžāϝā§āĻ āĻĨā§āĻā§ āύāĻŋāĻā§āĻā§ āϰāĻā§āώāĻž āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āύāĻžāĨ¤ āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻā§āϰāϏ-āĻ āϰāĻŋāĻāĻŋāύ āĻ ā§āϝāĻžāĻāĻžāĻ āĻšāϞ āĻā§āϰāϏ-āϏāĻžāĻāĻ āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻĢā§āϰāĻāĻŋ (CSRF) āϝā§āĻāĻžāύ⧠āĻāĻāĻāύ āĻāĻā§āϰāĻŽāĻŖāĻāĻžāϰ⧠āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āϤāĻžāĻĻā§āϰ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰ⧠āĻāĻŽāύ āϏāĻžāĻāĻā§āϰ āĻĻāĻŋāĻā§ āĻĒā§āϰāϞā§āĻŦā§āϧ āĻāϰ⧠āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϝ⧠āϏāĻžāϰā§āĻāĻžāϰ⧠āϞāĻ āĻāύ āĻāϰā§āĻā§ āϏā§āĻāĻžāύ⧠āĻāĻāĻāĻŋ āĻĢāϰā§āĻŽ āĻāĻŽāĻž āĻĻā§āϝāĻŧāĨ¤ āϝā§āĻšā§āϤ⧠āϏāĻžāϰā§āĻāĻžāϰ āĻŦāϞāϤ⧠āĻĒāĻžāϰ⧠āύāĻž āĻ āύā§āϰā§āϧāĻāĻŋ āĻ āύā§āϝ āĻĄā§āĻŽā§āύ (āĻā§āϰāϏ-āϏāĻžāĻāĻ) āĻĨā§āĻā§ āĻāϏā§āĻā§ āĻāĻŋāύāĻž āĻāĻŦāĻ āĻŦā§āϰāĻžāĻāĻāĻžāϰ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻ āύā§āϰā§āϧ⧠āĻā§āĻāĻŋ āϏāĻāϝā§āĻā§āϤ āĻāϰā§, āϤāĻžāĻ āϏāĻžāϰā§āĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĒāĻā§āώ āĻĨā§āĻā§ āĻāĻā§āϰāĻŽāĻŖāĻāĻžāϰā§āϰ āĻ āύā§āϰā§āϧ āĻāϰāĻž āĻĒāĻĻāĻā§āώā§āĻĒāĻāĻŋ āĻāĻžāϰā§āϝāĻāϰ āĻāϰāĻŦā§āĨ¤
āĻā§āϰāϏ-āϏāĻžāĻāĻ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāύāĻā§āϞā§āĻļāύ (XSSI) āĻŦāĻž āĻā§āϰāϏ-āĻ āϰāĻŋāĻāĻŋāύ āϤāĻĨā§āϝ āĻĢāĻžāĻāϏā§āϰ āĻŽāϤ⧠āĻ āύā§āϝāĻžāύā§āϝ āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻāĻā§āϰāĻŽāĻŖāĻā§āϞāĻŋ CSRF-āĻāϰ āĻŽāϤā§āĻ āĻāĻŦāĻ āĻāĻā§āϰāĻŽāĻŖāĻāĻžāϰā§-āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŋāϤ āύāĻĨāĻŋāϤ⧠āĻļāĻŋāĻāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĨā§āĻā§ āϏāĻāϏā§āĻĨāĻžāύāĻā§āϞāĻŋ āϞā§āĻĄ āĻāϰāĻž āĻāĻŦāĻ āĻļāĻŋāĻāĻžāϰā§āϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϏāĻŽā§āĻĒāϰā§āĻā§ āϤāĻĨā§āϝ āĻĢāĻžāĻāϏ āĻāϰāĻžāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§āĨ¤ āϝā§āĻšā§āϤ⧠āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻā§āϞāĻŋ āĻ āĻŦāĻŋāĻļā§āĻŦāϏā§āϤ āĻŦā§āϝāĻā§āϤāĻŋāĻĻā§āϰ āĻĨā§āĻā§ āĻŦāĻŋāĻļā§āĻŦāϏā§āϤ āĻ āύā§āϰā§āϧāĻā§āϞāĻŋāĻā§ āϏāĻšāĻā§āĻ āĻāϞāĻžāĻĻāĻž āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āύāĻž, āϤāĻžāĻ āϤāĻžāϰāĻž āĻĻā§āώāĻŋāϤ āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻā§āϰā§āϝāĻžāĻĢāĻŋāĻ āĻŦāĻžāϤāĻŋāϞ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āύāĻžā§ˇ
āĻŽā§āĻāĻžāĻĄā§āĻāĻž āĻāύāϝāĻŧāύ āĻāϰāĻž āĻšāĻā§āĻā§
āĻŽā§āĻāĻžāĻĄā§āĻāĻž āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻšā§āĻĄāĻžāϰ āĻāύāϝāĻŧāύ āĻšāϞ āĻāĻāĻāĻŋ āύāϤā§āύ āĻāϝāĻŧā§āĻŦ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āϝāĻž āϏāĻžāϰā§āĻāĻžāϰāĻā§āϞāĻŋāĻā§ āĻā§āϰāϏ-āĻ
āϰāĻŋāĻāĻŋāύ āĻāĻā§āϰāĻŽāĻŖ āĻĨā§āĻā§ āϰāĻā§āώāĻž āĻāϰāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ Sec-Fetch-* āĻļāĻŋāϰā§āύāĻžāĻŽāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āϏā§āĻā§ āĻāĻāĻāĻŋ HTTP āĻ
āύā§āϰā§āϧā§āϰ āĻĒā§āϰā§āĻā§āώāĻžāĻĒāĻ āϏāĻŽā§āĻĒāϰā§āĻā§ āϤāĻĨā§āϝ āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§, āϤāĻžāϰāĻž āĻ
āύā§āϰā§āϧāĻāĻŋ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻāϰāĻžāϰ āĻāĻā§ āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻžāĻāĻžāϰ⧠āϏāĻžāϰā§āĻāĻžāϰāĻā§ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āύā§āϤāĻŋ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻžāϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧāĨ¤ āĻāĻāĻŋ āĻĄā§āĻā§āϞāĻĒāĻžāϰāĻĻā§āϰ āĻāĻāĻāĻŋ āĻ
āύā§āϰā§āϧ āĻā§āϰāĻšāĻŖ āĻŦāĻž āĻĒā§āϰāϤā§āϝāĻžāĻā§āϝāĻžāύ āĻāϰāĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϤ⧠āĻĻā§āϝāĻŧ āĻāĻŦāĻ āĻāĻāĻŋ āϝ⧠āĻĒā§āϰā§āĻā§āώāĻžāĻĒāĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāĻŦā§ āϤāĻžāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰā§, āĻāĻāĻŋ āϤāĻžāĻĻā§āϰ āύāĻŋāĻāϏā§āĻŦ āĻāĻŦā§āĻĻāύā§āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻāϰāĻž āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻŦā§āϧ āĻ
āύā§āϰā§āϧā§āϰ āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž āĻāĻžāύāĻžāϤ⧠āϏāĻā§āώāĻŽ āĻāϰā§āĨ¤

Sec-Fetch-* āĻļāĻŋāϰā§āύāĻžāĻŽ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāĻĻāϤā§āϤ HTTP āĻ
āύā§āϰā§āϧ⧠āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ āĻĒā§āϰāϏāĻā§āĻā§āϰ āĻāĻžāϰāĻŖā§ āĻā§āώāϤāĻŋāĻāĻžāϰāĻ āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻ
āύā§āϰā§āϧāĻā§āϞāĻŋ āϏāĻžāϰā§āĻāĻžāϰ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāϤā§āϝāĻžāĻā§āϝāĻžāύ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§ā§ˇ 
Sec-Fetch-Site
Sec-Fetch-Site āϏāĻžāϰā§āĻāĻžāϰāĻā§ āĻŦāϞ⧠āϝ⧠āĻā§āύ āϏāĻžāĻāĻāĻāĻŋ āĻ
āύā§āϰā§āϧ āĻĒāĻžāĻ āĻŋāϝāĻŧā§āĻā§āĨ¤ āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻāĻ āĻŽāĻžāύāĻāĻŋāĻā§ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤāĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋāϤ⧠āϏā§āĻ āĻāϰā§:
-
same-origin, āϝāĻĻāĻŋ āĻ āύā§āϰā§āϧāĻāĻŋ āĻāĻĒāύāĻžāϰ āύāĻŋāĻā§āϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĻā§āĻŦāĻžāϰāĻž āĻāϰāĻž āĻšāϝāĻŧ (āϝā§āĻŽāύsite.example) -
same-site, āϝāĻĻāĻŋ āĻ āύā§āϰā§āϧāĻāĻŋ āĻāĻĒāύāĻžāϰ āϏāĻžāĻāĻā§āϰ āĻāĻāĻāĻŋ āϏāĻžāĻŦāĻĄā§āĻŽā§āύ āĻĻā§āĻŦāĻžāϰāĻž āĻāϰāĻž āĻšāϝāĻŧ (āϝā§āĻŽāύbar.site.example) -
none, āϝāĻĻāĻŋ āĻ āύā§āϰā§āϧāĻāĻŋ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻā§āύā§āĻā§āϰ āϏāĻžāĻĨā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻŽāĻŋāĻĨāϏā§āĻā§āϰāĻŋāϝāĻŧāĻž āĻĻā§āĻŦāĻžāϰāĻž āϏā§āώā§āĻ āĻšāϝāĻŧ (āϝā§āĻŽāύ āĻāĻāĻāĻŋ āĻŦā§āĻāĻŽāĻžāϰā§āĻā§ āĻā§āϞāĻŋāĻ āĻāϰāĻž) -
cross-site, āϝāĻĻāĻŋ āĻ āύā§āϰā§āϧāĻāĻŋ āĻ āύā§āϝ āĻāϝāĻŧā§āĻŦāϏāĻžāĻāĻ āĻĻā§āĻŦāĻžāϰāĻž āĻĒāĻžāĻ āĻžāύ⧠āĻšāϝāĻŧ (āϝā§āĻŽāύevil.example)
Sec-Fetch-Mode
Sec-Fetch-Mode āĻ
āύā§āϰā§āϧā§āϰ āĻŽā§āĻĄ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋāĻāĻžāĻŦā§ āĻ
āύā§āϰā§āϧā§āϰ āĻĒā§āϰāĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āĻŽāĻŋāϞ⧠āϝāĻžāϝāĻŧ āĻāĻŦāĻ āĻāĻĒāύāĻžāĻā§ āύā§āĻāĻŋāĻā§āĻļāύ āĻ
āύā§āϰā§āϧ āĻĨā§āĻā§ āϰāĻŋāϏā§āϰā§āϏ āϞā§āĻĄāĻā§āϞāĻŋāĻā§ āĻāϞāĻžāĻĻāĻž āĻāϰāϤ⧠āĻĻā§āϝāĻŧ⧎ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, navigate āĻāĻāĻāĻŋ āĻāύā§āϤāĻŦā§āϝ āĻāĻāĻāĻŋ āĻļā§āϰā§āώ-āϏā§āϤāϰā§āϰ āύā§āĻāĻŋāĻā§āĻļāύ āĻ
āύā§āϰā§āϧ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰ⧠āϝāĻāύ no-cors āĻāĻāĻāĻŋ āĻāĻŦāĻŋ āϞā§āĻĄ āĻāϰāĻžāϰ āĻŽāϤ⧠āϏāĻāϏā§āĻĨāĻžāύ āĻ
āύā§āϰā§āϧāĻā§āϞāĻŋ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰā§ā§ˇ
Sec-Fetch-Dest
Sec-Fetch-Dest āĻāĻāĻāĻŋ āĻ
āύā§āϰā§āϧā§āϰ āĻāύā§āϤāĻŦā§āϝ āĻĒā§āϰāĻāĻžāĻļ āĻāϰ⧠(āϝā§āĻŽāύ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ script āĻŦāĻž āĻāĻāĻāĻŋ img āĻā§āϝāĻžāĻ āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻĻā§āĻŦāĻžāϰāĻž āĻāĻāĻāĻŋ āϏāĻāϏā§āĻĨāĻžāύ āĻ
āύā§āϰā§āϧ āĻāϰāĻž āĻšāϝāĻŧ)āĨ¤
āĻā§āϰāϏ-āĻ āϰāĻŋāĻāĻŋāύ āĻāĻā§āϰāĻŽāĻŖ āĻĨā§āĻā§ āϰāĻā§āώāĻž āĻāϰāĻžāϰ āĻāύā§āϝ āĻŽā§āĻāĻžāĻĄā§āĻāĻž āĻĢā§āĻ āĻāĻŋāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ
āĻāĻ āĻ āύā§āϰā§āϧā§āϰ āĻļāĻŋāϰā§āύāĻžāĻŽāĻā§āϞāĻŋ āϝ⧠āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āϤāĻĨā§āϝ āĻĒā§āϰāĻĻāĻžāύ āĻāϰ⧠āϤāĻž āĻŦā§āĻļ āϏāĻšāĻ, āϤāĻŦā§ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻĒā§āϰāϏāĻā§āĻ āĻāĻĒāύāĻžāĻā§ āϏāĻžāϰā§āĻāĻžāϰ-āϏāĻžāĻāĻĄā§ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āϏā§āϰāĻā§āώāĻž āϝā§āĻā§āϤāĻŋ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĻā§āϝāĻŧ, āϝāĻžāĻā§ āϰāĻŋāϏā§āϰā§āϏ āĻāĻāϏā§āϞā§āĻļāύ āύā§āϤāĻŋ āĻšāĻŋāϏāĻžāĻŦā§āĻ āĻāϞā§āϞā§āĻ āĻāϰāĻž āĻšāϝāĻŧ, āĻā§āĻĄā§āϰ āĻāϝāĻŧā§āĻāĻāĻŋ āϞāĻžāĻāύ āϏāĻšāĨ¤
āĻāĻāĻāĻŋ āϏāĻŽā§āĻĒāĻĻ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύāĻāϰāĻŖ āύā§āϤāĻŋ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ
āĻāĻāĻāĻŋ āϰāĻŋāϏā§āϰā§āϏ āĻāĻāϏā§āϞā§āĻļāύ āĻĒāϞāĻŋāϏāĻŋ āĻāĻĒāύāĻžāϰ āϰāĻŋāϏā§āϰā§āϏāĻā§āϞāĻŋāĻā§ āĻŦāĻšāĻŋāϰāĻžāĻāϤ āĻāϝāĻŧā§āĻŦāϏāĻžāĻāĻāĻā§āϞāĻŋāϰ āĻĻā§āĻŦāĻžāϰāĻž āĻ
āύā§āϰā§āϧ āĻāϰāĻž āĻĨā§āĻā§ āĻŦāĻžāϧāĻž āĻĻā§āϝāĻŧ⧎ āĻāĻ āϧāϰāύā§āϰ āĻā§āϰāĻžāĻĢāĻŋāĻ āĻŦā§āϞāĻ āĻāϰāĻž CSRF, XSSI, āĻāĻžāĻāĻŽāĻŋāĻ āĻ
ā§āϝāĻžāĻāĻžāĻ āĻāĻŦāĻ āĻā§āϰāϏ-āĻ
āϰāĻŋāĻāĻŋāύ āϤāĻĨā§āϝ āĻĢāĻžāĻāϏā§āϰ āĻŽāϤ⧠āϏāĻžāϧāĻžāϰāĻŖ āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻāϝāĻŧā§āĻŦ āĻĻā§āϰā§āĻŦāϞāϤāĻžāĻā§āϞāĻŋāĻā§ āĻĒā§āϰāĻļāĻŽāĻŋāϤ āĻāϰā§āĨ¤ āĻāĻ āύā§āϤāĻŋāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āϏāĻŽāϏā§āϤ āĻĒā§āϰāĻžāύā§āϤā§āϰ āĻāύā§āϝ āϏāĻā§āώāĻŽ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āύāĻŋāĻā§āϰ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĨā§āĻā§ āĻāϏāĻž āϏāĻŽāϏā§āϤ āϏāĻāϏā§āĻĨāĻžāύ āĻ
āύā§āϰā§āϧā§āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āϏāϰāĻžāϏāϰāĻŋ āύā§āĻāĻŋāĻā§āĻļāύ (āĻāĻāĻāĻŋ HTTP GET āĻ
āύā§āϰā§āϧā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§) āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āĻŦā§ā§ˇ āĻāĻāĻāĻŋ āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻĒā§āϰāϏāĻā§āĻā§ (āϝā§āĻŽāύ CORS āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϞā§āĻĄ āĻšāĻāϝāĻŧāĻž āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ) āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻāĻā§āϞāĻŋāĻā§ āĻāĻ āϝā§āĻā§āϤāĻŋ āĻĨā§āĻā§ āĻ
āĻĒā§āĻ āĻāĻāĻ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§ā§ˇ
āϧāĻžāĻĒ 1: āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻĨā§āĻā§ āĻ āύā§āϰā§āϧā§āϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻāĻŋāύ āϝāĻž āĻŽā§āĻāĻžāĻĄā§āĻāĻž āĻāύāϝāĻŧāύ āĻĒāĻžāĻ āĻžāϝāĻŧ āύāĻž
āϝā§āĻšā§āϤ⧠āϏāĻŽāϏā§āϤ āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻĢā§āĻ āĻŽā§āĻāĻžāĻĄā§āĻāĻž āϏāĻŽāϰā§āĻĨāύ āĻāϰ⧠āύāĻž, āϏā§āĻšā§āϤ⧠āĻāĻĒāύāĻžāĻā§ sec-fetch-site āĻāĻĒāϏā§āĻĨāĻŋāϤāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰ⧠Sec-Fetch-* āĻļāĻŋāϰā§āύāĻžāĻŽ āϏā§āĻ āĻāϰ⧠āύāĻž āĻāĻŽāύ āĻ
āύā§āϰā§āϧāĻā§āϞāĻŋāĻā§ āĻ
āύā§āĻŽāϤāĻŋ āĻĻāĻŋāϤ⧠āĻšāĻŦā§āĨ¤
if not req['sec-fetch-site']:
return True # Allow this request
āϧāĻžāĻĒ 2: āĻāĻāĻ-āϏāĻžāĻāĻ āĻāĻŦāĻ āĻŦā§āϰāĻžāĻāĻāĻžāϰ-āĻĒā§āϰāĻŦāϰā§āϤāĻŋāϤ āĻ āύā§āϰā§āϧā§āϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻāĻŋāύ
āĻā§āϰāϏ-āĻ
āϰāĻŋāĻāĻŋāύ āĻĒā§āϰāϏāĻā§āĻ (āϝā§āĻŽāύ evil.example ) āĻĨā§āĻā§ āĻāĻĻā§āĻā§āϤ āύāϝāĻŧ āĻāĻŽāύ āϝā§āĻā§āύ⧠āĻ
āύā§āϰā§āϧā§āϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āĻāϝāĻŧāĻž āĻšāĻŦā§āĨ¤ āĻŦāĻŋāĻļā§āώ āĻāϰā§, āĻāĻ āĻ
āύā§āϰā§āϧāĻā§āϞāĻŋ āĻšāϞ:
- āĻāĻĒāύāĻžāϰ āύāĻŋāĻā§āϰ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻĨā§āĻā§ āĻāĻĻā§āĻā§āϤ (āϝā§āĻŽāύ āĻāĻāĻāĻŋ āĻāĻāĻ-āĻ
āϰāĻŋāĻāĻŋāύ āĻ
āύā§āϰā§āϧ āϝā§āĻāĻžāύā§
site.exampleāĻ āύā§āϰā§āϧsite.example/foo.jsonāϏāĻŦāϏāĻŽāϝāĻŧ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āĻāϝāĻŧāĻž āĻšāĻŦā§)āĨ¤ - āĻāĻĒāύāĻžāϰ āϏāĻžāĻŦāĻĄā§āĻŽā§āύ āĻĨā§āĻā§ āĻāĻĻā§āĻā§āϤ.
- āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻā§āύā§āĻā§āϰ āϏāĻžāĻĨā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻŽāĻŋāĻĨāϏā§āĻā§āϰāĻŋāϝāĻŧāĻž āĻĻā§āĻŦāĻžāϰāĻž āϏā§āώā§āĻ āĻšāϝāĻŧ (āϝā§āĻŽāύ āϏāϰāĻžāϏāϰāĻŋ āύā§āĻāĻŋāĻā§āĻļāύ āĻŦāĻž āĻŦā§āĻāĻŽāĻžāϰā§āĻā§ āĻā§āϞāĻŋāĻ āĻāϰ⧠āĻāϤā§āϝāĻžāĻĻāĻŋ)āĨ¤
if req['sec-fetch-site'] in ('same-origin', 'same-site', 'none'):
return True # Allow this request
āϧāĻžāĻĒ 3: āϏāĻšāĻ āĻļā§āϰā§āώ-āϏā§āϤāϰā§āϰ āύā§āĻāĻŋāĻā§āĻļāύ āĻāĻŦāĻ iframing āĻ āύā§āĻŽāϤāĻŋ āĻĻāĻŋāύ
āĻāĻĒāύāĻžāϰ āϏāĻžāĻāĻāĻāĻŋ āĻāĻāύāĻ āĻ
āύā§āϝāĻžāύā§āϝ āϏāĻžāĻāĻ āĻĨā§āĻā§ āϞāĻŋāĻā§āĻ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠āϤāĻž āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāϤā§, āĻāĻĒāύāĻžāĻā§ āϏāĻšāĻ ( HTTP GET ) āĻļā§āϰā§āώ-āϏā§āϤāϰā§āϰ āύā§āĻāĻŋāĻā§āĻļāύā§āϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻāĻŋāϤ⧠āĻšāĻŦā§āĨ¤
if req['sec-fetch-mode'] == 'navigate' and req.method == 'GET'
# <object> and <embed> send navigation requests, which we disallow.
and req['sec-fetch-dest'] not in ('object', 'embed'):
return True # Allow this request
āϧāĻžāĻĒ 4: āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻā§āϰā§āϝāĻžāĻĢāĻŋāĻ āĻĒāϰāĻŋāĻŦā§āĻļāύ āĻāϰāĻžāϰ āĻāύā§āϝ āĻļā§āώ āĻĒāϝāĻŧā§āύā§āĻāĻā§āϞāĻŋ āĻ āĻĒā§āĻ āĻāĻāĻ āĻāϰā§āύ (āĻāĻā§āĻāĻŋāĻ)
āĻāĻŋāĻā§ āĻā§āώā§āϤā§āϰā§, āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ āĻā§āϰāϏ-āϏāĻžāĻāĻ āϞā§āĻĄ āĻāϰāĻžāϰ āĻāύā§āϝ āϏāĻāϏā§āĻĨāĻžāύ āϏāϰāĻŦāϰāĻžāĻš āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻ āϏāĻŽā§āĻĒāĻĻāĻā§āϞāĻŋāĻā§ āĻĒā§āϰāϤāĻŋ-āĻĒāĻžāĻĨ āĻŦāĻž āĻĒā§āϰāϤāĻŋ-āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ āĻāĻŋāϤā§āϤāĻŋāϤ⧠āĻāĻžāĻĄāĻŧ āĻĻā§āĻāϝāĻŧāĻž āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤ āĻāĻ āϧāϰāύā§āϰ āĻļā§āώ āĻĒāϝāĻŧā§āύā§āĻāĻā§āϞāĻŋāϰ āĻāĻĻāĻžāĻšāϰāĻŖ āĻšāϞ:
- āĻā§āϰāϏ-āĻ
āϰāĻŋāĻāĻŋāύ āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ: āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻāĻŋ
CORSāϏāĻā§āώāĻŽ āĻāϰāĻž āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻāĻā§āϞāĻŋ āĻĒāϰāĻŋāĻŦā§āĻļāύ āĻāϰā§, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāĻā§ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āϏā§āĻā§āϞāĻŋāĻā§ āϰāĻŋāϏā§āϰā§āϏ āĻāĻāϏā§āϞā§āĻļāύ āĻĨā§āĻā§ āĻ āĻĒā§āĻ āĻāĻāĻ āĻāϰāϤ⧠āĻšāĻŦā§ āϝāĻžāϤ⧠āĻāĻ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻāĻā§āϞāĻŋāϤ⧠āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻ āύā§āϰā§āϧāĻā§āϞāĻŋ āĻāĻāύāĻ āϏāĻŽā§āĻāĻŦāĨ¤ - āĻĒāĻžāĻŦāϞāĻŋāĻ āϰāĻŋāϏā§āϰā§āϏ (āϝā§āĻŽāύ āĻāĻŽā§āĻ, āĻļā§āϞā§, āĻāϤā§āϝāĻžāĻĻāĻŋ): āϝā§āĻā§āύ āĻĒāĻžāĻŦāϞāĻŋāĻ āĻāĻŦāĻ āĻ āĻĒā§āϰāĻŽāĻžāĻŖāĻŋāϤ āϰāĻŋāϏā§āϰā§āϏ āϝāĻž āĻ āύā§āϝāĻžāύā§āϝ āϏāĻžāĻāĻ āĻĨā§āĻā§ āĻā§āϰāϏ-āĻ āϰāĻŋāĻāĻŋāύ āϞā§āĻĄāϝā§āĻā§āϝ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤ āϏā§āĻāϏāĻžāĻĨā§ āĻāĻžāĻĄāĻŧ āĻĻā§āĻāϝāĻŧāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
if req.path in ('/my_CORS_endpoint', '/favicon.png'):
return True
āϧāĻžāĻĒ 5: āĻ āύā§āϝ āϏāĻŽāϏā§āϤ āĻ āύā§āϰā§āϧ āĻĒā§āϰāϤā§āϝāĻžāĻā§āϝāĻžāύ āĻāϰā§āύ āϝā§āĻā§āϞāĻŋ āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻāĻŦāĻ āύā§āĻāĻŋāĻā§āĻļāύāĻžāϞ āύāϝāĻŧ
āĻ āύā§āϝ āĻā§āύ⧠āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻ āύā§āϰā§āϧ āĻāĻ āϏāĻŽā§āĻĒāĻĻ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύāĻāϰāĻŖ āύā§āϤāĻŋ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāϤā§āϝāĻžāĻā§āϝāĻžāύ āĻāϰāĻž āĻšāĻŦā§ āĻāĻŦāĻ āĻāĻāĻāĻžāĻŦā§ āĻāĻĒāύāĻžāϰ āĻāĻŦā§āĻĻāύāĻā§ āϏāĻžāϧāĻžāϰāĻŖ āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻāĻā§āϰāĻŽāĻŖ āĻĨā§āĻā§ āϰāĻā§āώāĻž āĻāϰāĻŦā§āĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ: āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻā§āĻĄāĻāĻŋ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻāĻāĻāĻŋ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āϰāĻŋāϏā§āϰā§āϏ āĻāĻāϏā§āϞā§āĻļāύ āύā§āϤāĻŋāϰ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰ⧠āĻŦāĻž āĻāĻāĻāĻŋ āĻŽāĻŋāĻĄāϞāĻāϝāĻŧā§āϝāĻžāϰ āĻšāĻŋāϏāĻžāĻŦā§ āϏāĻŽā§āĻāĻžāĻŦā§āϝ āĻĻā§āώāĻŋāϤ āĻā§āϰāϏ-āϏāĻžāĻāĻ āϰāĻŋāϏā§āϰā§āϏ āĻ āύā§āϰā§āϧāĻā§āϞāĻŋāĻā§ āĻ āϏā§āĻŦā§āĻāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ, āϏāĻžāϧāĻžāϰāĻŖ āύā§āĻāĻŋāĻā§āĻļāύāĻžāϞ āĻ āύā§āϰā§āϧāĻā§āϞāĻŋāĻā§ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧ:
# Reject cross-origin requests to protect from CSRF, XSSI, and other bugs
def allow_request(req):
# Allow requests from browsers which don't send Fetch Metadata
if not req['sec-fetch-site']:
return True
# Allow same-site and browser-initiated requests
if req['sec-fetch-site'] in ('same-origin', 'same-site', 'none'):
return True
# Allow simple top-level navigations except <object> and <embed>
if req['sec-fetch-mode'] == 'navigate' and req.method == 'GET'
and req['sec-fetch-dest'] not in ('object', 'embed'):
return True
# [OPTIONAL] Exempt paths/endpoints meant to be served cross-origin.
if req.path in ('/my_CORS_endpoint', '/favicon.png'):
return True
# Reject all other requests that are cross-site and not navigational
return False
āĻāĻāĻāĻŋ āϏāĻŽā§āĻĒāĻĻ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύāĻāϰāĻŖ āύā§āϤāĻŋ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻšāĻā§āĻā§
- āĻāĻĒāύāĻžāϰ āϏāĻžāĻāĻ āĻā§āĻāĻžāĻŦā§ āĻāĻāϰāĻŖ āĻāϰ⧠āϤāĻž āϞāĻ āĻāϰāϤ⧠āĻāĻŦāĻ āύāĻŋāϰā§āĻā§āώāĻŖ āĻāϰāϤ⧠āĻāĻĒāϰ⧠āĻĨā§āĻā§ āĻā§āĻĄ āϏā§āύāĻŋāĻĒā§āĻā§āϰ āĻŽāϤ⧠āĻāĻāĻāĻŋ āĻŽāĻĄāĻŋāĻāϞ āĻāύāϏā§āĻāϞ āĻāϰā§āύ āĻāĻŦāĻ āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āϝ⧠āĻŦāĻŋāϧāĻŋāύāĻŋāώā§āϧāĻā§āϞāĻŋ āĻā§āύāĻ āĻŦā§āϧ āĻā§āϰāĻžāĻĢāĻŋāĻāĻā§ āĻĒā§āϰāĻāĻžāĻŦāĻŋāϤ āĻāϰ⧠āύāĻžā§ˇ
- āĻŦā§āϧ āĻā§āϰāϏ-āĻ āϰāĻŋāĻāĻŋāύ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻāĻā§ āĻāĻžāĻĄāĻŧ āĻĻāĻŋāϝāĻŧā§ āϏāĻŽā§āĻāĻžāĻŦā§āϝ āϞāĻā§āĻāύ āĻ āĻŋāĻ āĻāϰā§āύāĨ¤
- āĻ -āĻ āύā§āĻļā§āϞāύ āĻ āύā§āϰā§āϧ āĻŦāĻžāĻĻ āĻĻāĻŋāϝāĻŧā§ āύā§āϤāĻŋ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰā§āύāĨ¤
āύā§āϤāĻŋ āϞāĻā§āĻāύ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰāĻž āĻāĻŦāĻ āĻ āĻŋāĻ āĻāϰāĻž
āĻāĻāĻŋ āϏā§āĻĒāĻžāϰāĻŋāĻļ āĻāϰāĻž āĻšāϝāĻŧ āϝ⧠āĻāĻĒāύāĻŋ āĻāĻĒāύāĻžāϰ āϏāĻžāϰā§āĻāĻžāϰ-āϏāĻžāĻāĻĄ āĻā§āĻĄā§ āϰāĻŋāĻĒā§āϰā§āĻāĻŋāĻ āĻŽā§āĻĄā§ āĻāĻāĻŋ āϏāĻā§āϰāĻŋāϝāĻŧ āĻāϰ⧠āĻāĻāĻāĻŋ āĻĒāĻžāϰā§āĻļā§āĻŦ-āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž āĻŽā§āĻā§āϤ āĻāĻĒāĻžāϝāĻŧā§ āĻāĻĒāύāĻžāϰ āύā§āϤāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰā§āύ⧎ āĻŦāĻŋāĻāϞā§āĻĒāĻāĻžāĻŦā§, āĻāĻĒāύāĻŋ āĻŽāĻŋāĻĄāϞāĻāϝāĻŧā§āϝāĻžāϰ⧠āĻŦāĻž āĻŦāĻŋāĻĒāϰā§āϤ āĻĒā§āϰāĻā§āϏāĻŋāϤ⧠āĻāĻ āϝā§āĻā§āϤāĻŋāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϝāĻž āĻāϤā§āĻĒāĻžāĻĻāύ āĻā§āϰā§āϝāĻžāĻĢāĻŋāĻā§āϰ āĻā§āώā§āϤā§āϰ⧠āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻĒāύāĻžāϰ āύā§āϤāĻŋ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āĻāĻŽāύ āĻā§āύāĻ āϞāĻā§āĻāύ āϞāĻ āĻāϰā§āĨ¤
Google-āĻ āĻŽā§āĻāĻžāĻĄā§āĻāĻž āϰāĻŋāϏā§āϰā§āϏ āĻāĻāϏā§āϞā§āĻļāύ āĻĒāϞāĻŋāϏāĻŋ āύāĻŋāϝāĻŧā§ āĻāϏāĻžāϰ āĻāĻŽāĻžāĻĻā§āϰ āĻ āĻāĻŋāĻā§āĻāϤāĻž āĻĨā§āĻā§, āĻŦā§āĻļāĻŋāϰāĻāĻžāĻ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāĻžāύāĻā§āϞāĻŋ āĻĄāĻŋāĻĢāϞā§āĻāĻāĻžāĻŦā§ āĻāĻ āĻāĻžāϤā§āϝāĻŧ āύā§āϤāĻŋāϰ āϏāĻžāĻĨā§ āϏāĻžāĻŽāĻā§āĻāϏā§āϝāĻĒā§āϰā§āĻŖ āĻāĻŦāĻ āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻā§āϰā§āϝāĻžāĻĢāĻŋāĻā§āϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āĻā§āĻŦ āĻāĻŽāĻ āĻāύā§āĻĄāĻĒāϝāĻŧā§āύā§āĻ āĻāĻžāĻĄāĻŧā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϝāĻŧ⧎
āĻāĻāĻāĻŋ āϏāĻŽā§āĻĒāĻĻ āĻŦāĻŋāĻā§āĻāĻŋāύā§āύāĻāϰāĻŖ āύā§āϤāĻŋ āĻāĻžāϰā§āϝāĻāϰ āĻāϰāĻž
āĻāĻĒāύāĻŋ āϝāĻžāĻāĻžāĻ āĻāϰāĻžāϰ āĻĒāϰ⧠āϝ⧠āĻāĻĒāύāĻžāϰ āύā§āϤāĻŋ āĻŦā§āϧ āĻā§āĻĒāĻžāĻĻāύ āĻā§āϰā§āϝāĻžāĻĢāĻŋāĻāĻā§ āĻĒā§āϰāĻāĻžāĻŦāĻŋāϤ āĻāϰ⧠āύāĻž, āĻāĻĒāύāĻŋ āĻŦāĻŋāϧāĻŋāύāĻŋāώā§āϧ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāϤ⧠āĻĒā§āϰāϏā§āϤā§āϤ, āĻā§āϝāĻžāϰāĻžāύā§āĻāĻŋ āĻĻāĻŋāϝāĻŧā§ āϝ⧠āĻ āύā§āϝāĻžāύā§āϝ āϏāĻžāĻāĻāĻā§āϞāĻŋ āĻāĻĒāύāĻžāϰ āϏāĻāϏā§āĻĨāĻžāύāĻā§āϞāĻŋāϰ āĻ āύā§āϰā§āϧ āĻāϰāϤ⧠āϏāĻā§āώāĻŽ āĻšāĻŦā§ āύāĻž āĻāĻŦāĻ āĻā§āϰāϏ-āϏāĻžāĻāĻ āĻāĻā§āϰāĻŽāĻŖ āĻĨā§āĻā§ āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āϰāĻā§āώāĻž āĻāϰāĻŦā§ā§ˇ
āĻāϰāĻ āĻĒāĻĄāĻŧāĻž
- W3C āĻŽā§āĻāĻžāĻĄā§āĻāĻž āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻšā§āĻĄāĻžāϰ āϏā§āĻĒā§āϏāĻŋāĻĢāĻŋāĻā§āĻļāύ āĻāύā§āύ
- āĻŽā§āĻāĻžāĻĄā§āĻāĻž āĻā§āϞāĻžāϰ āĻŽāĻžāĻ āĻāύā§āύ
- Google I/O āĻāĻ: āĻāϧā§āύāĻŋāĻ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ (āϏā§āϞāĻžāĻāĻĄ) āϏāĻš āĻāϝāĻŧā§āĻŦ āĻ ā§āϝāĻžāĻĒāϏ āϏā§āϰāĻā§āώāĻŋāϤ āĻāϰāĻž