ãªãªãžã³ããŒã¹ã®ãã£ãã·ã¥åé¢ã«ããããã³ããšã³ãService Workerã®ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ãæ¢æ±ãããŠã§ãã¢ããªã®ã»ãã¥ãªãã£ãããã©ãŒãã³ã¹ããã©ã€ãã·ãŒã匷åããŸãã广çãªå®è£ æ¹æ³ãåŠã³ãŸãããã
ããã³ããšã³ãService Workerã®ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ïŒãªãªãžã³ããŒã¹ã®ãã£ãã·ã¥åé¢
çµ¶ãéãªãé²åãããŠã§ãéçºã®äžçã«ãããŠãããã©ãŒãã³ã¹ãšã»ãã¥ãªãã£ã®æé©åã¯æéèŠã§ããService Workerã¯ããªãã©ã€ã³æ©èœãæå¹ã«ããèªã¿èŸŒã¿æéãæ¹åããããã®åŒ·åãªããŒã«ã§ãããæ éã«æ±ããªããšæœåšçãªã»ãã¥ãªãã£è匱æ§ãåŒãèµ·ããå¯èœæ§ããããŸãããããã®ãªã¹ã¯ã軜æžãããŠãŒã¶ãŒã®ãã©ã€ãã·ãŒã匷åããããã®éèŠãªææ³ã®äžã€ãããªãªãžã³ããŒã¹ã®ãã£ãã·ã¥åé¢ã«ããããã³ããšã³ãService Workerã®ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã§ãããã®å æ¬çãªã¬ã€ãã§ã¯ããã®äžå¯æ¬ ãªææ³ã®æŠå¿µãå©ç¹ãå®è£ ãããã³ãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠè©³ãã解説ããŸãã
ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ãšã¯ïŒ
Service Workerã®æèã«ããããã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ãšã¯ããã£ãã·ã¥ããããªãœãŒã¹ããã®ãªãªãžã³ã«åºã¥ããŠåé¢ããææ³ãæããŸããããŒãã£ã·ã§ãã³ã°ããªããšãService Workerã¯ç°ãªããªãªãžã³ãããã£ãã·ã¥ããããªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããå¯èœæ§ããããã»ãã¥ãªãã£ãªã¹ã¯ãæœåšçãªããŒã¿æŒæŽ©ã«ã€ãªãããŸããããã¯ç¹ã«ããµãŒãããŒãã£ã®ã¹ã¯ãªããããªãœãŒã¹ãé¢äžããã·ããªãªã§éèŠã§ãã
jQueryãBootstrapã®ãããªå ±éã©ã€ãã©ãªã®ããã«å ±æã®ã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒã䜿çšããŠãããŠã§ããµã€ããæ³åããŠã¿ãŠãã ããããã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ããªããšããããŠã§ããµã€ãã«æ³šå ¥ãããæªæã®ããã¹ã¯ãªããããåãCDNã䜿çšããå¥ã®ãŠã§ããµã€ãã®ãã£ãã·ã¥ããããªãœãŒã¹ã«ã¢ã¯ã»ã¹ããŠæäœããå¯èœæ§ããããã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒæ»æããã®ä»ã®ã»ãã¥ãªãã£è匱æ§ã«ã€ãªããå¯èœæ§ããããŸãã
ãªãªãžã³ããŒã¹ã®ãã£ãã·ã¥åé¢ã¯ããªãœãŒã¹ããã®ãªãªãžã³ïŒã¹ããŒã ããã¹ãåãããŒãïŒã«åºã¥ããŠä¿åã»ååŸãããããã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã®ç¹å®ã®åœ¢åŒã§ããããã«ãããService Workerã¯ãããããµãŒãã¹ãæäŸãããŠã§ããµã€ããšåããªãªãžã³ã®ãªãœãŒã¹ã«ã®ã¿ã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã
ãªããªãªãžã³ããŒã¹ã®ãã£ãã·ã¥åé¢ãéèŠãªã®ãïŒ
ãªãªãžã³ããŒã¹ã®ãã£ãã·ã¥åé¢ã«ã¯ãããã€ãã®äž»èŠãªå©ç¹ããããŸãïŒ
- ã»ãã¥ãªãã£ã®åŒ·åïŒãã£ãã·ã¥ããããªãœãŒã¹ãžã®ã¯ãã¹ãªãªãžã³ã¢ã¯ã»ã¹ãé²ããXSSæ»æããã®ä»ã®ã»ãã¥ãªãã£è匱æ§ã®ãªã¹ã¯ã軜æžããŸãã
- ãã©ã€ãã·ãŒã®åäžïŒãªãªãžã³ã«åºã¥ããŠãã£ãã·ã¥ããŒã¿ãåé¢ããããšã§ãç°ãªããŠã§ããµã€ãéã§ãŠãŒã¶ãŒã远跡ããå¯èœæ§ãå¶éããŸãã
- ããã©ãŒãã³ã¹ã®åäžïŒé¢é£ã®ãªããªãœãŒã¹ã«ãããã£ãã·ã¥æ±æã®ãªã¹ã¯ãæžããããšã§ããã£ãã·ã¥ãããçãåäžãããå¯èœæ§ããããŸãã
- ã»ãã¥ãªãã£æšæºãžã®æºæ ïŒãŠã§ãã¢ããªã±ãŒã·ã§ã³éçºã®ãã¹ããã©ã¯ãã£ã¹ãã»ãã¥ãªãã£æšå¥šäºé ã«æ²¿ã£ãŠããŸãã
ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ããªãå Žåã®ã»ãã¥ãªãã£ãªã¹ã¯ã®çè§£
ãªãªãžã³ããŒã¹ã®ãã£ãã·ã¥åé¢ã®éèŠæ§ãååã«çè§£ããããã«ã¯ãå ±æãã£ãã·ã¥ã«é¢é£ããã»ãã¥ãªãã£ãªã¹ã¯ãçè§£ããããšãäžå¯æ¬ ã§ãïŒ
ã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒæ»æ
åè¿°ã®éãããããŠã§ããµã€ãã«æ³šå ¥ãããæªæã®ããã¹ã¯ãªããã¯ãå¥ã®ãŠã§ããµã€ãã®ãã£ãã·ã¥ããããªãœãŒã¹ã«ã¢ã¯ã»ã¹ããŠæäœããå¯èœæ§ããããŸããããã«ãããæ»æè ã¯æ£èŠã®ãŠã§ããµã€ãã«æªæã®ããã³ãŒããæ³šå ¥ãããããŠãŒã¶ãŒã®èªèšŒæ å ±ãçãã ãããã®ä»ã®æå®³ãªã¢ã¯ã·ã§ã³ãå®è¡ãããããããšãå¯èœã«ãªããŸãã
ããŒã¿æŒæŽ©
ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ããªããšããããŠã§ããµã€ãã«ãã£ãŠãã£ãã·ã¥ãããæ©å¯ããŒã¿ããå¥ã®ãŠã§ããµã€ãã«ãã£ãŠã¢ã¯ã»ã¹ãããå¯èœæ§ããããŸããããã¯ãå人æ å ±ãéèããŒã¿ããŸãã¯ãã®ä»ã®æ©å¯æ å ±ã®æŒæŽ©ã«ã€ãªããå¯èœæ§ããããŸãã
ãã£ãã·ã¥æ±æïŒãã£ãã·ã¥ãã€ãºãã³ã°ïŒ
æ»æè ã¯ããã£ãã·ã¥ã«æªæã®ãããªãœãŒã¹ãæ³šå ¥ããå¯èœæ§ãããããããçããæããªããŠãŒã¶ãŒã«æäŸãããããšã«ãªããŸããããã¯ãæªæã®ããã³ãŒãã®å®è¡ã誀解ãæãã³ã³ãã³ãã®è¡šç€ºã«ã€ãªããå¯èœæ§ããããŸãã
ãªãªãžã³ããŒã¹ã®ãã£ãã·ã¥åé¢ã®å®è£
ãªãªãžã³ããŒã¹ã®ãã£ãã·ã¥åé¢ã®å®è£ ã«ã¯ãéåžžã以äžã®æé ãå«ãŸããŸãïŒ
1. ãªãªãžã³ããšã«å¥ã ã®ãã£ãã·ã¥åã䜿çšãã
æãç°¡åãªã¢ãããŒãã¯ããªãªãžã³ããšã«ç°ãªããã£ãã·ã¥åã䜿çšããããšã§ããããã«ãããç°ãªããªãªãžã³ã®ãªãœãŒã¹ãå¥ã ã®ãã£ãã·ã¥ã«ä¿åãããã¯ãã¹ãªãªãžã³ã¢ã¯ã»ã¹ã鲿¢ãããŸãã
以äžã¯ãService Workerã§ãããå®è£ ããæ¹æ³ã®äŸã§ãïŒ
const CACHE_NAME = 'my-site-cache-' + self.location.hostname;
const urlsToCache = [
'/',
'/styles/main.css',
'/script/main.js'
];
self.addEventListener('install', function(event) {
// ã€ã³ã¹ããŒã«æé ãå®è¡
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
console.log('ãã£ãã·ã¥ãéããŸãã');
return cache.addAll(urlsToCache);
})
);
});
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request)
.then(function(response) {
// ãã£ãã·ã¥ããã - ã¬ã¹ãã³ã¹ãè¿ã
if (response) {
return response;
}
// éèŠ: ãªã¯ãšã¹ããã¯ããŒã³ããŸãã
// ãªã¯ãšã¹ãã¯ã¹ããªãŒã ã§ãããäžåºŠããæ¶è²»ã§ããŸããããã£ãã·ã¥ã§äžåºŠã
// ãã©ãŠã¶ã®fetchã§äžåºŠæ¶è²»ãããããã¬ã¹ãã³ã¹ãã¯ããŒã³ããå¿
èŠããããŸãã
var fetchRequest = event.request.clone();
return fetch(fetchRequest).then(
function(response) {
// æå¹ãªã¬ã¹ãã³ã¹ãåãåã£ãã確èªããŸã
if(!response || response.status !== 200 || response.type !== 'basic') {
return response;
}
// éèŠ: ã¬ã¹ãã³ã¹ãã¯ããŒã³ããŸãã
// ã¬ã¹ãã³ã¹ã¯ã¹ããªãŒã ã§ãããäžåºŠããæ¶è²»ã§ããŸããã
var responseToCache = response.clone();
caches.open(CACHE_NAME)
.then(function(cache) {
cache.put(event.request, responseToCache);
});
return response;
}
);
})
);
});
ãã®äŸã§ã¯ãCACHE_NAMEã¯ãŠã§ããµã€ãã®ãã¹ãåã«åºã¥ããŠåçã«çæãããŸããããã«ãããåãŠã§ããµã€ããå°çšã®ãã£ãã·ã¥ãæã€ããšãä¿èšŒãããŸãã
2. Cache APIã®æ©èœïŒäŸïŒVaryããããŒïŒã䜿çšãã
Cache APIã¯ããªã¯ãšã¹ãããããŒã«åºã¥ããŠãã£ãã·ã¥ããããªãœãŒã¹ãåºå¥ããããã«äœ¿çšã§ããVaryããããŒã®ãããªæ©èœãæäŸããŸãããªãªãžã³ã«çŽæ¥é¢é£ããããã§ã¯ãããŸããããVaryããããŒã¯ãã£ãã·ã³ã°å¹çãåäžããããªãœãŒã¹ã®æå³ããªãã¯ãã¹ãªãªãžã³å
±æãé²ãããã«äœ¿çšã§ããŸãã
VaryããããŒã¯ããµãŒããŒãç¹å®ã®ãªã¯ãšã¹ãããããŒã®å€ã«åºã¥ããŠç°ãªãã¬ã¹ãã³ã¹ãè¿ãå¯èœæ§ãããããšããã©ãŠã¶ã«éç¥ããŸããäŸãã°ããŠã§ããµã€ããAccept-LanguageããããŒã«åºã¥ããŠç°ãªãã³ã³ãã³ããæäŸããå Žåãã¬ã¹ãã³ã¹ã«Vary: Accept-LanguageããããŒãå«ããã¹ãã§ãã
3. Subresource Integrity (SRI) ã®å®è£
Subresource Integrity (SRI) ã¯ãCDNãä»ã®ãµãŒãããŒãã£ãœãŒã¹ããååŸãããã¡ã€ã«ãæ¹ãããããŠããªãããšããã©ãŠã¶ãæ€èšŒã§ããããã«ããã»ãã¥ãªãã£æ©èœã§ãã<script>ãŸãã¯<link>ã¿ã°ã«integrity屿§ãå«ããããšã§ããã©ãŠã¶ãæåŸ
ãããããã·ã¥å€ãšäžèŽããå Žåã«ã®ã¿ãªãœãŒã¹ãå®è¡ãŸãã¯é©çšããããã«ã§ããŸãã
<script
src="https://example.com/script.js"
integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwE8wc"
crossorigin="anonymous"></script>
SRIã¯çŽæ¥ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ãå®è£ ãããã®ã§ã¯ãããŸãããããã£ãã·ã¥ããããªãœãŒã¹ã䟵害ãããŠããªãããšãä¿èšŒããããšã§ã远å ã®ã»ãã¥ãªãã£å±€ãæäŸããŸãã
4. ã³ã³ãã³ãã»ãã¥ãªãã£ããªã·ãŒïŒCSPïŒ
ã³ã³ãã³ãã»ãã¥ãªãã£ããªã·ãŒïŒCSPïŒã¯ãç¹å®ã®ãŠã§ããµã€ãã«å¯ŸããŠãã©ãŠã¶ãèªã¿èŸŒãããšãèš±å¯ãããªãœãŒã¹ãå¶åŸ¡ã§ãã匷åãªã»ãã¥ãªãã£ã¡ã«ããºã ã§ããCSPãå®çŸ©ããããšã§ãä¿¡é Œã§ããªããœãŒã¹ããã®ãªãœãŒã¹ã®èªã¿èŸŒã¿ããã©ãŠã¶ã«é²ãããXSSæ»æããã®ä»ã®ã»ãã¥ãªãã£è匱æ§ã®ãªã¹ã¯ã軜æžã§ããŸãã
CSPã¯éåžžãContent-Security-Policy HTTPããããŒãŸãã¯<meta>ã¿ã°ã䜿çšããŠå®çŸ©ãããŸããããã¯ãã¹ã¯ãªãããã¹ã¿ã€ã«ã·ãŒããç»åããã©ã³ããªã©ãããŸããŸãªçš®é¡ã®ãªãœãŒã¹ã«å¯ŸããŠèš±å¯ããããœãŒã¹ãæå®ããäžé£ã®ãã£ã¬ã¯ãã£ãã§æ§æãããŸãã
äŸãã°ã以äžã®CSPãã£ã¬ã¯ãã£ãã¯ãã¹ã¯ãªããã®èªã¿èŸŒã¿ãåäžãªãªãžã³ã«å¶éããŸãïŒ
Content-Security-Policy: script-src 'self'
SRIãšåæ§ã«ãCSPã¯çŽæ¥ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ãå®è£ ãããã®ã§ã¯ãããŸããããå ±æãã£ãã·ã¥ã«ãã£ãŠæªåããå¯èœæ§ã®ããã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°æ»æã«å¯ŸããéèŠãªé²åŸ¡å±€ãæäŸããŸãã
ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°å®è£ ã®ãã¹ããã©ã¯ãã£ã¹
ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã广çã«å®è£ ããããã«ã¯ã以äžã®ãã¹ããã©ã¯ãã£ã¹ãèæ ®ããŠãã ããïŒ
- äžè²«ãããã£ãã·ã¥åœåèŠåã䜿çšããïŒãªãœãŒã¹ãé©åã«åé¢ãããããã«ããã£ãã·ã¥ã®æç¢ºã§äžè²«ããåœåèŠåã確ç«ããŸãã
- ãã£ãã·ã¥ã宿çã«æŽæ°ããïŒãŠãŒã¶ãŒãåžžã«ãŠã§ããµã€ãã®ææ°ããŒãžã§ã³ãå©çšã§ããããã«ããã£ãã·ã¥ã宿çã«æŽæ°ããæŠç¥ãå®è£ ããŸãã
- ãã£ãã·ã¥ã®æŽæ°ãé©åã«åŠçããïŒãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã劚ããªãããã«ããã£ãã·ã¥ã®æŽæ°ãé©åã«åŠçããã¡ã«ããºã ãå®è£ ããŸããããã«ã¯ãããŒãžã§ãã³ã°ã¹ããŒã ãããã¯ã°ã©ãŠã³ãæŽæ°ããã»ã¹ã®äœ¿çšãå«ãŸããå ŽåããããŸãã
- ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã®å®è£ ããã¹ãããïŒãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã®å®è£ ãæåŸ éãã«æ©èœããæ°ããªã»ãã¥ãªãã£è匱æ§ãå°å ¥ããŠããªãããšã確èªããããã«ã培åºçã«ãã¹ãããŸãã
- ãã£ãã·ã¥ãç£èŠããïŒãã£ãã·ã¥ãæé©ã«æ©èœããŠãããåé¡ãçºçããŠããªãããšã確èªããããã«ããã£ãã·ã¥ãç£èŠããŸãã
- CDNãã£ãã·ã³ã°ãèæ ®ããïŒCDNã䜿çšããŠããå Žåã¯ãããããªãªãžã³ããŒã¹ã®ãã£ãã·ã³ã°ãå°éããããã«é©åã«èšå®ãããŠããããšã確èªããŠãã ãããå€ãã®CDNã¯ããªãªãžã³ã«åºã¥ããŠãã£ãã·ã¥ããããªãœãŒã¹ãåé¢ããæ©èœãæäŸããŠããŸãã
å®äžçã®ã¢ããªã±ãŒã·ã§ã³ã«ããããã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã®äŸ
ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã¯ãã»ãã¥ãªãã£ããã©ã€ãã·ãŒãããã©ãŒãã³ã¹ãåäžãããããã«ãããŸããŸãªå®äžçã®ã¢ããªã±ãŒã·ã§ã³ã§åºã䜿çšãããŠããŸãã以äžã«ããã€ãã®äŸãæããŸãïŒ
- Eã³ããŒã¹ãµã€ãïŒEã³ããŒã¹ãµã€ãã¯ãã¯ã¬ãžããã«ãŒãæ å ±ãè³Œå ¥å±¥æŽãªã©ã®æ©å¯æ§ã®é«ããŠãŒã¶ãŒããŒã¿ãä¿è·ããããã«ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã䜿çšããŸãããªãªãžã³ã«åºã¥ããŠãã£ãã·ã¥ããŒã¿ãåé¢ããããšã§ããã®æ å ±ãžã®äžæ£ã¢ã¯ã»ã¹ãé²ããŸãã
- ãœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ïŒãœãŒã·ã£ã«ã¡ãã£ã¢ãã©ãããã©ãŒã ã¯ãã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°æ»æãé²ãããŠãŒã¶ãŒã®ãã©ã€ãã·ãŒãä¿è·ããããã«ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã䜿çšããŸãããªãªãžã³ã«åºã¥ããŠãã£ãã·ã¥ããŒã¿ãåé¢ããããšã§ãæªæã®ããã¹ã¯ãªããããŠãŒã¶ãŒã¢ã«ãŠã³ãã«ã¢ã¯ã»ã¹ããããå人æ å ±ãçãã ãããã®ãé²ããŸãã
- ãªã³ã©ã€ã³ãã³ãã³ã°ã¢ããªã±ãŒã·ã§ã³ïŒãªã³ã©ã€ã³ãã³ãã³ã°ã¢ããªã±ãŒã·ã§ã³ã¯ãæ©å¯æ§ã®é«ãéèããŒã¿ãä¿è·ããããã«ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã䜿çšããŸãããªãªãžã³ã«åºã¥ããŠãã£ãã·ã¥ããŒã¿ãåé¢ããããšã§ãå£åº§æ®é«ãååŒå±¥æŽããã®ä»ã®æ©å¯æ å ±ãžã®äžæ£ã¢ã¯ã»ã¹ãé²ããŸãã
- ã³ã³ãã³ã管çã·ã¹ãã ïŒCMSïŒïŒCMSãã©ãããã©ãŒã ã¯ãã³ã³ãã³ããåé¢ããã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°æ»æãé²ãããã«ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã䜿çšããŸãããã©ãããã©ãŒã ã§ãã¹ããããŠããåãŠã§ããµã€ãã¯ãéåžžãå°çšã®ãã£ãã·ã¥ãæã£ãŠããŸãã
ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°å®è£ ã®ããã®ããŒã«ãšãªãœãŒã¹
ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã广çã«å®è£ ããã®ã«åœ¹ç«ã€ããã€ãã®ããŒã«ãšãªãœãŒã¹ããããŸãïŒ
- WorkboxïŒWorkboxã¯ãä¿¡é Œæ§ãé«ã髿§èœãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã容æã«ããJavaScriptã©ã€ãã©ãªãšããŒã«ã®ã³ã¬ã¯ã·ã§ã³ã§ãããã£ãã·ã³ã°ãã«ãŒãã£ã³ã°ããã®ä»ã®Service Workeré¢é£ã¿ã¹ã¯ã®ããã®ã¢ãžã¥ãŒã«ãæäŸããŸãã
- LighthouseïŒLighthouseã¯ããŠã§ãããŒãžã®å質ãåäžãããããã®ãªãŒãã³ãœãŒã¹ã®èªååããŒã«ã§ããããã©ãŒãã³ã¹ãã¢ã¯ã»ã·ããªãã£ãããã°ã¬ãã·ããŠã§ãã¢ããªãSEOãªã©ã®ç£æ»æ©èœããããŸããããã䜿çšããŠãã£ãã·ã³ã°ã®æå¹æ§ãç£æ»ããŸãã
- ãã©ãŠã¶éçºè ããŒã«ïŒãã©ãŠã¶éçºè ããŒã«ã¯ããã£ãã·ã¥ãããçããã£ãã·ã¥ãµã€ãºããã£ãã·ã¥ã®æå¹æéãªã©ããã£ãã·ã³ã°ã®æåã«é¢ããè±å¯ãªæ å ±ãæäŸããŸãããããã®ããŒã«ã䜿çšããŠãã£ãã·ã¥ãç£èŠããæœåšçãªåé¡ãç¹å®ããŸãã
- ãŠã§ãã»ãã¥ãªãã£ãã§ãã¯ãªã¹ãïŒãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ãæ£ããå®è£ ããä»ã®æœåšçãªã»ãã¥ãªãã£è匱æ§ã«å¯ŸåŠããŠããããšã確èªããããã«ããŠã§ãã»ãã¥ãªãã£ãã§ãã¯ãªã¹ãããã¹ããã©ã¯ãã£ã¹ãåç §ããŠãã ãããOWASPïŒOpen Web Application Security ProjectïŒã¯çŽ æŽããããªãœãŒã¹ã§ãã
ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã®æªæ¥
ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã®æªæ¥ã¯ããã£ãã·ã¥ããããªãœãŒã¹ãåé¢ããã»ãã¥ãªãã£ã匷åããããã®ããã«æŽç·Žãããæè¡ãå«ãããšã«ãªãã§ããããããã€ãã®æœåšçãªå°æ¥ã®çºå±ã«ã¯ã以äžã®ãããªãã®ããããŸãïŒ
- ãã詳现ãªãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ïŒåã«ãªãªãžã³ã«åºã¥ããŠããŒãã£ã·ã§ãã³ã°ããã ãã§ãªããå°æ¥ã®å®è£ ã§ã¯ããŠãŒã¶ãŒIDãã³ã³ãã³ãã¿ã€ããªã©ãä»ã®èŠå ã«åºã¥ããŠããŒãã£ã·ã§ãã³ã°ããå¯èœæ§ããããŸãã
- èªååããããã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ïŒå°æ¥ã®ãã©ãŠã¶ãService Workerã©ã€ãã©ãªã¯ãèªåçã«ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ãå®è£ ããéçºè ãæåã§èšå®ããè² æ ã軜æžãããããããŸããã
- ã³ã³ãã³ãããªããªãŒãããã¯ãŒã¯ïŒCDNïŒãšã®çµ±åïŒå°æ¥ã®CDNã¯ããã£ãã·ã¥ããããªãœãŒã¹ã管çã»åé¢ããããã®ããé«åºŠãªæ©èœãæäŸããããããããå€§èŠæš¡ãªãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã®å®è£ ã容æã«ããŸãã
- æ¹åãããã»ãã¥ãªãã£ç£æ»ããŒã«ïŒå°æ¥ã®ã»ãã¥ãªãã£ç£æ»ããŒã«ã¯ããã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã®å®è£ ã«é¢ããããå æ¬çãªåæãæäŸããéçºè ãæœåšçãªã»ãã¥ãªãã£è匱æ§ãç¹å®ãã察åŠããã®ãå©ãããããããŸããã
çµè«
ãªãªãžã³ããŒã¹ã®ãã£ãã·ã¥åé¢ã«ããããã³ããšã³ãService Workerã®ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã¯ããŠã§ãã¢ããªã±ãŒã·ã§ã³ã®ã»ãã¥ãªãã£ããã©ã€ãã·ãŒãããã©ãŒãã³ã¹ãåäžãããããã®éèŠãªææ³ã§ãããªãªãžã³ã«åºã¥ããŠãã£ãã·ã¥ããããªãœãŒã¹ãåé¢ããããšã§ãã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°æ»æãããŒã¿æŒæŽ©ããã®ä»ã®ã»ãã¥ãªãã£è匱æ§ã®ãªã¹ã¯ã軜æžã§ããŸãããã®ã¬ã€ãã§æŠèª¬ãããã¹ããã©ã¯ãã£ã¹ã«åŸããå©çšå¯èœãªããŒã«ãšãªãœãŒã¹ã掻çšããããšã§ã广çã«ãã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ãå®è£ ãããŠã§ãã¢ããªã±ãŒã·ã§ã³ãå®å šã§é«æ§èœã§ããããšãä¿èšŒã§ããŸãã
ãŠã§ããé²åãç¶ããæ°ããªã»ãã¥ãªãã£è åšãåºçŸããäžã§ãææ°ã®ã»ãã¥ãªãã£ãã¹ããã©ã¯ãã£ã¹ãåžžã«ææ¡ãããŠãŒã¶ãŒãšããŒã¿ãä¿è·ããããã®å ç¢ãªã»ãã¥ãªãã£å¯Ÿçãå®è£ ããããšãäžå¯æ¬ ã§ãããã£ãã·ã¥ããŒãã£ã·ã§ãã³ã°ã¯ããã®åãçµã¿ã®éèŠãªéšåã§ãã
ãŠã§ãéçºãããžã§ã¯ãã§ã¯ãåžžã«ã»ãã¥ãªãã£ãšãã©ã€ãã·ãŒãåªå ããããšãå¿ããªãã§ãã ãããããããããšã§ã誰ããããå®å šã§ä¿¡é Œã§ãããŠã§ããåµé ããã®ã«åœ¹ç«ã¡ãŸãã