Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
It’s been a while.
Search
ruuuui
September 14, 2017
0
26
It’s been a while.
ruuuui
September 14, 2017
Tweet
Share
More Decks by ruuuui
See All by ruuuui
TCP/IP
ruuuui
0
60
log
ruuuui
0
59
Malware
ruuuui
0
41
File
ruuuui
0
50
リダイレクト
ruuuui
0
38
a
ruuuui
0
50
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
0
770
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
130
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
220
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Mobile First: as difficult as doing things right
swwweet
225
10k
So, you think you're a good person
axbom
PRO
2
1.9k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
51
Measuring & Analyzing Core Web Vitals
bluesmoon
9
750
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Marketing to machines
jonoalderson
1
4.6k
Everyday Curiosity
cassininazir
0
130
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
Transcript
ڞ༗ࢿݯʹؔ͢Δ ށݐɹߥҪ ྨ
ϨʔείϯσΟγϣϯ
Race Condition(ڝ߹ঢ়ଶ)ͷ੬ऑੑ ✦ ֓ཁ • ڞ༗ࢿݯͱ ෳͷϓϩηοα͔Βʰಉ࣌ʱʹར༻͍ͯ͠Δ มɾڞ༗ϝϞϦɾDBɾϑΝΠϧͷ͜ͱ ڞ༗ࢿݯʹର͢Δഉଞ੍ޚ͕ෆेͳ߹ ڝ߹ঢ়ଶͷݪҼͱͳΔ
Race Conditionͷදྫ • ผਓͷݸਓใͳͲ͕දࣔ͞ΕΔ • DBͷෆ߹ • ϑΝΠϧ༰ͷഁյ
Πϯελϯεมͱ • ΦϒδΣΫτͷதͰΛอଘ͓ͯͨ͘͠Ίͷར༻͞ΕΔͷ͕ ʮΠϯελϯεมʯͰ͢ɻ • ΠϯελϯεมΫϥεͰશϝιουͰڞ௨ͯ͠༻͢Δ͜ͱ ͕ग़དྷ·͢ɻ • ࠷ॳʹͲ͔͜ͷϝιουͰ༻͞Εͨ࣌ͰΠϯελϯεม࡞ ͞ΕɺҰ࡞͞ΕͨΠϯελϯεมଞͷϝιουͰΛऔ
Γग़ͨ͠Γ֨ೲͨ͠Γ͢Δ͜ͱ͕ग़དྷΔΑ͏ʹͳΓ·͢ɻ
߈ܸख๏ͱӨڹ ӈͷϓϩάϥϜnameจࣈྻΛड͚औͬͯ Πϯελϯεมnameʹೖ͠ɺ̏ඵ·͔ͬͯΒɺ ΠϯελϯεมΛදࣔ͢ΔϓϩάϥϜ
߈ܸख๏ͱӨڹ
• มnameڞ༗ม • ڞ༗มnameͷഉଞ੍ޚΛ͍ͯ͠ͳ͍ ੬ऑੑ͕ੜ·ΕΔݪҼ αʔϒϨοτΫϥεͷΠϯελϯεม͕ ڞ༗ࢿݯͰ͋Δ͜ͱΛΒͳ͍ͱɺىͯ͜͠͠·͏
• ՄೳͰ͋Εڞ༗ࢿݯΛ༻͠ͳ͍ ex. String name = req.getParameter(“name”); • ڞ༗ࢿݯʹରͯ͠ഉଞ੍ޚΛߦ͏ synchronizedจsynchronisedϝιουΛར༻
ରࡦ
yamadaॲཧ tanakaॲཧ 1sec name=“yamada”; ༷ʑͳॲཧ(̏ඵ) nameදࣔ(yamada) SynchronisedʹΑΓػ (̎ඵ) name=“tanaka”; ༷ʑͳॲཧ(̏ඵ)
nameදࣔ(tanaka) 0sec 2sec 3sec 4sec 5sec 6sec
·ͱΊ • ڞ༗ࢿݯͰ͖Δ͚ͩΘͳ͍ • ഉଞॲཧΛ͗ͯ͢͠DoS੬ऑੑΛ࢈ΜͰ͠·͏ͷͰɺ ฒߦॲཧɾϚϧνεϨουϓϩάϥϛϯάΛߦ͏