From 83d267faed50de0c63b754c9bdf34524e89c2246 Mon Sep 17 00:00:00 2001 From: Rinjae Date: Mon, 6 Jul 2026 15:32:18 +0900 Subject: [PATCH] =?UTF-8?q?=ED=81=B4=EB=9D=BC=EC=9D=B4=EC=96=B8=ED=8A=B8?= =?UTF-8?q?=20=ED=95=98=EB=93=9C=EB=8B=9D=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80:=20-=20DevTools=20=EA=B0=90=EC=A7=80=20=EB=B0=8F=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=20=EC=82=AD=EC=A0=9C,=20=EC=9A=B0=ED=81=B4?= =?UTF-8?q?=EB=A6=AD=20=EC=B0=A8=EB=8B=A8=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20-=20PortalProperty=20=EA=B8=B0=EB=B0=98=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EA=B4=80=EB=A6=AC=20=EC=84=9C=EB=B9=84=EC=8A=A4=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20-=20=ED=81=B4=EB=9D=BC=EC=9D=B4=EC=96=B8?= =?UTF-8?q?=ED=8A=B8=20=EA=B0=80=EB=93=9C=20=EC=8A=A4=ED=81=AC=EB=A6=BD?= =?UTF-8?q?=ED=8A=B8=20=EB=B0=8F=20=ED=86=A0=EA=B8=80=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=20=ED=85=9C=ED=94=8C=EB=A6=BF=20=EC=97=B0=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../breadcrumb/GlobalControllerAdvice.java | 22 +++++++ .../common/security/ClientGuardService.java | 42 ++++++++++++ src/main/resources/static/favicon.png | Bin 0 -> 1632 bytes .../static/img/favicon/apple-touch-icon.png | Bin 0 -> 6971 bytes .../static/img/favicon/favicon-16x16.png | Bin 0 -> 1082 bytes .../static/img/favicon/favicon-180x180.png | Bin 0 -> 6971 bytes .../static/img/favicon/favicon-192x192.png | Bin 0 -> 7519 bytes .../static/img/favicon/favicon-32x32.png | Bin 0 -> 1632 bytes .../static/img/favicon/favicon-48x48.png | Bin 0 -> 2163 bytes .../static/img/favicon/favicon-512x512.png | Bin 0 -> 26326 bytes .../resources/static/img/favicon/favicon.png | Bin 0 -> 1632 bytes .../resources/static/js/djb/client-guard.js | 60 ++++++++++++++++++ .../templates/views/fragment/djbank/head.html | 17 +++++ 13 files changed, 141 insertions(+) create mode 100644 src/main/java/com/eactive/apim/portal/common/security/ClientGuardService.java create mode 100644 src/main/resources/static/favicon.png create mode 100644 src/main/resources/static/img/favicon/apple-touch-icon.png create mode 100644 src/main/resources/static/img/favicon/favicon-16x16.png create mode 100644 src/main/resources/static/img/favicon/favicon-180x180.png create mode 100644 src/main/resources/static/img/favicon/favicon-192x192.png create mode 100644 src/main/resources/static/img/favicon/favicon-32x32.png create mode 100644 src/main/resources/static/img/favicon/favicon-48x48.png create mode 100644 src/main/resources/static/img/favicon/favicon-512x512.png create mode 100644 src/main/resources/static/img/favicon/favicon.png create mode 100644 src/main/resources/static/js/djb/client-guard.js diff --git a/src/main/java/com/eactive/apim/portal/common/breadcrumb/GlobalControllerAdvice.java b/src/main/java/com/eactive/apim/portal/common/breadcrumb/GlobalControllerAdvice.java index 3d353f5..7ae0475 100644 --- a/src/main/java/com/eactive/apim/portal/common/breadcrumb/GlobalControllerAdvice.java +++ b/src/main/java/com/eactive/apim/portal/common/breadcrumb/GlobalControllerAdvice.java @@ -8,6 +8,7 @@ import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ModelAttribute; import com.eactive.apim.portal.config.PortalProperties; import com.eactive.apim.portal.apps.session.service.UserSessionService; +import com.eactive.apim.portal.common.security.ClientGuardService; @ControllerAdvice public class GlobalControllerAdvice { @@ -21,6 +22,9 @@ public class GlobalControllerAdvice { @Autowired private UserSessionService userSessionService; + @Autowired + private ClientGuardService clientGuardService; + @ModelAttribute("breadcrumb") public List addBreadcrumbToModel(HttpServletRequest request) { String currentPath = request.getRequestURI(); @@ -55,4 +59,22 @@ public class GlobalControllerAdvice { public int sessionTimeoutMinutes() { return userSessionService.getSessionTimeoutMinutes(); } + + /** + * 클라이언트 가드 - 우클릭(contextmenu) 차단 활성화 여부. + * PortalProperty(Portal/djb.client-guard.contextmenu.enabled)에서 조회. + */ + @ModelAttribute("clientGuardContextmenu") + public boolean clientGuardContextmenu() { + return clientGuardService.isContextmenuBlockEnabled(); + } + + /** + * 클라이언트 가드 - DevTools 감지 시 화면 삭제 활성화 여부. + * PortalProperty(Portal/djb.client-guard.devtools.enabled)에서 조회. + */ + @ModelAttribute("clientGuardDevtools") + public boolean clientGuardDevtools() { + return clientGuardService.isDevtoolsGuardEnabled(); + } } diff --git a/src/main/java/com/eactive/apim/portal/common/security/ClientGuardService.java b/src/main/java/com/eactive/apim/portal/common/security/ClientGuardService.java new file mode 100644 index 0000000..892715b --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/common/security/ClientGuardService.java @@ -0,0 +1,42 @@ +package com.eactive.apim.portal.common.security; + +import com.eactive.apim.portal.portalproperty.service.PortalPropertyService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * 클라이언트측 하드닝(우클릭 차단 · DevTools 감지) 토글을 DB(PortalProperty)에서 조회한다. + * + *

두 기능은 서로 독립된 property 로 on/off 한다. group 은 기존 {@code Portal} 을 재사용하여 + * {@link PortalPropertyService#getOrCreateProperty} 의 자동 생성이 동작하도록 한다.

+ * + * + */ +@Service +@RequiredArgsConstructor +public class ClientGuardService { + + private static final String GROUP = "Portal"; + private static final String NAME_CONTEXTMENU = "djb.client-guard.contextmenu.enabled"; + private static final String NAME_DEVTOOLS = "djb.client-guard.devtools.enabled"; + + private final PortalPropertyService portalPropertyService; + + /** 우클릭(contextmenu) 차단 활성화 여부 */ + public boolean isContextmenuBlockEnabled() { + return read(NAME_CONTEXTMENU, "우클릭(contextmenu) 차단"); + } + + /** DevTools 감지 시 화면 삭제 활성화 여부 */ + public boolean isDevtoolsGuardEnabled() { + return read(NAME_DEVTOOLS, "DevTools 감지 시 화면 삭제"); + } + + private boolean read(String name, String desc) { + return Boolean.parseBoolean( + portalPropertyService.getOrCreateProperty(GROUP, name, "false", desc).trim()); + } +} diff --git a/src/main/resources/static/favicon.png b/src/main/resources/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..99941c9acf9e5e13b5a879ef6cc06a64eacb5b96 GIT binary patch literal 1632 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fgQIQ(qnda-upao=eFt9L6 zF@Q{91Y$czX*k=BQG>7(?pq)aaTa()7Beu2se&-0XOPMVplOkrArU1JzCKpT`MG+DDfvmMdKI|^AYBYL z6;?oIZfZ%QLPc&)Ua?h$trA#;6_5=Q)>l#hD=EpgRf_NpP;kyKN>wn^Gte_ovg1-v zP_QXVNwW%aaf50H@@$ndN=gc>^!3Zj%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVc zD|GXUl_7?}%yCIAPAVyTG9T&_0m=g>P%x^ti977^F--g9zgt&|ROM8EJZ~5-f$Zq?LgH1n@d}=sz4|ZLO z%B<~7*u7Ojs5R)I-49{MoQ+`u7u6WMMSgw0Al4+Ixm9!0wyq;f!Z;kg9d&*LbZuK; zC*hl7{yqQK*?Vht@3fzNx6C=dD&gIknU=---p{FicZT&}^2Jw2?M*&i7tR(xTg1-B zma?~c@f+7GDOc{ehaZ1t>Gn!j@dBUbdk_DT_?;hf@6U`m*Sl$bXA-MlijYI^X%QhR&QHtDZhw6qxv~d`ZsbFH1J8?KBV+b2myo zuvJ&n<&m|gQuVA$&W1bsmp|s5Gwpr?pIMU3_Xm%X+rHlv*ZrC9X8SgF+3%|@>kiLM zaBEuBv7+b3G_7-+4}IMw_J5k(xu-5E8`YYAYnO=c`(J7B(N0JrbN{rs&Dk$5&R)~X zJ1;pt#q7YLH8&0^#!rkrvDwV#>=}vK3tl&uM{z|jmzugYi={@pU)IUt^Z(d$d(&Fhby-n8|F>W2%=ReM%-L_AGZ z?3y1NpTFLwJbUNXi8J3{;QjnFX=2s6gm0QMH+P=>@%7@4jjczjXB?D!C#PBc!F{VR z$GbUK)bGE&KELP0K11XGQC4exYd*{?{`qe08EKY(Q*t?9x35n#>Swh7Kg;3d{o88~ zJ^LXNb}D_NL8;{C4I*0EtG=v~`EmKW1LwkPb&OG*JGOAh*cmy+N%=E8xF~U`bM6dI zri}@K-2a6$YS>uz|FBx3_juMHFP)Ap!WWm`tYBjBKg_{3$vnHoWZHqMolVQ{y?VqL z!ud>iSEOaAlzHEQs+kKf3#%;nwP{82jl<4zehaG|Bu(2Irc3`QK7(dy_KgF#P zo$3>W)qgT?>I(Pf=Zx6sq7|#1@c-4`vprjc|2RA?x?(Y}Vbi@cS8|1-U*wo}&QTQn zS1Rmev@dANsb;3Hn@c9YZofHC`N#BAM@xd%vYo0fPMYD>xBr#Cz#D%RL$|->On1}& zvmdNiTsl8O_OOJ&tg+_U@%6-tC^vT1`(20PyDq08n87!1*nOS_1&QAOOGy8~}i& z006XZ>DVVyw=aBcjn(b6v;cg!{v7}=kOAY&dP*w)q~GqO*%6+eZZI&|$Hzy= z2P%Ygw+9PLNJxMoB47~_!P^Ky4?kB=OJ6}(4~~Bq`R_VPwjS2*4sMQ*1v*U}9vECd1nr}Ay0)U8ICqPwl7C(>OXiFB4x zajlmh?1^gn&1z<-A%=psWL>jng9LSWQcHYo_7EMbRFtS^7_8O?F_;M zD&^Gn#t!T`MncK3PK6nnhW{k|nb}Meh^)dO%~lgBscP+Bk!je;Az!2gY`{_uVB=y(V2dtLr`-@#X<54~=-#w9}^Zj;H}( zQjc!h=T9+kbY{84OKcW`DvoL6Za9p~N-H!y6RKVsdSBzG)eF>Bj^!Kr#O2nK{Mtni zA1YpP%#HnG=2OL{9P+`0>TD$$Awu_sJ&Kx|EnWBp&|8Wox{33dL+ZhGgjwX+qt)15 zdn0rR(ElX-ibpB5jTsVkgU80YOSN>grG_@cE#)A0NacSa^RXz$#tbVd(-)27M|zYX zSeX$xD2C%cyFwbKjV5_)$9{M$fwm(HhN$f$Dp+3YG__?y3+tAOr)@Z7TlLtG=**g$ zlkeXl;e-!%P!4V;RdQ8f6(`NQ@Rqh1l?^op9Sshd+M+tok6u})69#O%sO#P86E9*a z`f56vIkRiIy(nA_YiQ=5TOH12KVnolL^&M_9okkOZy25gd0d|bZBlhGVs_0MYt2f( zFVToBBRI&!8Be}AS~+FF==Wv--kjyM+vBnCqxv$(E4K;g@1%wz6o7r8tJ*Q2#6PeE z;zwb@6_#|=i28nxhJoBe-ZplyB<-;MG|f;h0JB<>j84_P66I}e zTl6WMKm1%}p3B`BuKUUJ57qd7M}f_t;+erOJmpSLwgYy6CCNgpw~Gf`)n}Y zulg-w14(J8Yz6j3AutESR%=%E2dh7AJby`>P3@}tw6DJA!|?P^*-jY;p5fc9@y=69 z3-d~Vx0V(2s(tLx(L3kGc2dG(#uVlvC*3g@TYrS4j7)G`Y+C|%cLa|AOpz!MisC=A z^YLPCc~m@wS9yx3Yi0fJ%?CB-_=q#mK76LUwr^eksV@7t+Luu|(|w~1p6e5rpjZCC z>1+gGI!9}G6${B-^{FzEE6{qfssdCMZbpOau5h^v zoY#5t2_4EaiQ!(VnS6BVmP{MukV}O5|K#m?3 z&0Z1iN?s*No&R;t=gS?2>bQAEbdqH zuKyA5ccRxUa^U3F(%9;EtUdJcb{K0*LK2GFZ3@WpHd69JqjQ+;njEnq`OJXnF1@p8 zC)sF+<1l-{Xwqx*LYn4^&v|1r>%b$1g#KCt2i|(R4FNo)3TMM_IGiQ#y4jm@ej-nd!lpqquvygJO0dK&JL8;kTdCRPgz0ih?`6;jl_9NA!iWQ#{DiLikCJfU;nTY z@yQOgGsb+%&DhWYKQ4WG$SkZVO)QuhXXm_<>$-j5$X+6bs(NDp=jZRw72CTJsECpx zVPphJZ@HYh7Cj)v1AXkT^MWRcAhK|3;TxJH?4sSevDV?(h-#J(-?;S?z9QXz&x4Ra z7eeMA@{TSkl>{1FH;NH1wcB2k;ghaZWY!Qt$J^5~Nh2^$0v-NX$y=87FzRP|=fR^i zfe-cHPr3V(25H8*Cre0DiN0Ilj8`Sgr&c)x`y50NmhvM}(a+*>O$Gan;ifH0vj`hj z=dyNCcyRCdLBAom^S28oae)u7ld7px2*BV{0tf(9BFJ0UO*i~Co<=Eqj749|VR-Sp zXRF;F9N(K@_z@Ep{9`}Tce2x+S>#$&==Yk#p~1i1{}COn|vsTdeI zJnIReKS=eO>J4gJIX5?k`Y^q{`7EqB6>IRW|IpBv%ll(Q-5h2eS++ND+367}Tlq2D z)b)TAq4_Hm{@L)IeLS3$O3*~<#m36y>{==vDRhM|OBTUtg?G>U;iYI&wC|e*_olEz z&4!BHQHQKXIa5AUcsnmK&^BGIeRb`Iv*C|#55h5WD{TXeqraO+B_puo- zk6^{`z99;w+GA*}FS6(hH%!Xe_adroORU6sB855x3;oM?x@SX z&+sIO%4M&48bK13aTxsu|I2L+*EaFET8K?$B*RES3v8tLSMKm6n~VSx>lC-Gl{Y;2 zY`^U0)9NG}v8R(emax&sBK|r5ViP^%sQ@(eA+ENHwawgwd3tsxE`6dolwl@DnB|+Y zz|nZv&Ph)h_tLL(E_|3Kg^~9zW@}I4=~!@OH*qCvcxII(PB#0POx!@c&7%tQpX{ul zCBHc1%Q6cK-Ks8cy1*p|x2gB$`OA|-9Q;WWrX^pZeJvE+A1eG_ElMi z6!iiu13iT(=WxWWbKqnzy!TA$aEhMzk&+1R&#&u;l&W|o(|ma{qvNgc>fBKOld2`% zZlPLQ(evOzcC^S+3cB~*JMYjB&u8s;rmww6Pq4~ohO257G*P(Y?KMDe3Y*6BDyy?J zU(Rx}%7s4$W*S?;%D-33K^jZ*s8es$OS^JdG2fWbi7TYvTfMuqw#+{1C7LbRW3Ki% z(z>ie?f&wf+>?D-PDt!X_kq%E_->t2^IWU-yz+pX=e4w~Lz9oW|F4s^1cs2R3rXN^ zjk?3b5425k_H@HZ_+o{oW&WabP}{{>Wxd~t(exWB9aF**G?FcFQ;P+Kh&skbRZ5vf zG!4n`U7o4tiZiYSaRxi(F&h(6paebbWxJfI#`n6c>H3URdJ)TwfD0P<&IY2c0U7>a zkOf-tB-WW(l)yem>BLHIfI{(n#n3RUYC_wc^%+q$2yiHlN`F2oK0#wzvvL9Om7vU(g72GY(4)l@&^kQNDoM)h2EI>h-vC=oTew$rjz%X2t zAYw0@dn4{>7~3cq(C6}sA0JD-U^}!Kc2F*O=jP&qq=smM^=gNL28-DQZDI(N5eP5gCDmNUiGewaR zjbzZKl9@Zc)+K`u3%3Zkg!@z296!-{$lihUF8g+pKt!&)=$if zlXGo~Cqb~)y%mz}cN}14v&N-RID~W1midHZEO;uaFc`;r-<}SGh$CHySc0m$=4gBgtkzi`!fogsm(Hf>3ylB zmJ5lLOq>Xo2Da#*rP`w0HNPLxs(z(OAFWX@J%^ZQK5UX8k3xIrFkB260`X0zzRbUo zc!K)hOT1tzlR6VmTdY|8h*!6qjKf{oQ-WJ5AWH1nbu>6vc|K?WL=t;m+XhX&JY)Yd zrC7o7wOkp3bO|jZe)}6hIrRzbAYzPHzs`Tz|X?q;Nj+JwR(>6r4AJt+Q%ua zoq~8C_|{zQ_I4rCE^`027kf_zEcFFK400_*jWob#9HxM;xhF zl@Uei+<(@b#1>lq&Xk|EUO!Y?D@^O zT|QEWNE!-A`y!vByOtx|{0a;qpFc4k#q?0wOw%X#(^p>!;aN`;)j9fJdS? zq+rWlwAt0nDSphP@%Hki?#{cJJs^^DNGPh7Rqy3w&?SadQC_f3l=S4=kje@qWTMA4To|5jw z6;l%Z(}w|F_uUR~;WF})wG(dxI;V}5!EeA{G+nnRmfSS|tYl8Ql|Va;6sRBP1Y#e=kK3=>LQY&S%)lAH8j4K2=~_*ULyLQ zGIIkN2zlNE4_{2Sd>PDf_77bd!kO=cG4T;ai{WF-7+jf26Xc7sKLhuqQ6E()D9pk` zS+w5kuU|e|xR@SDUp`;~WoT9oWqCylWZ%ix-p(7~jSKeveVnnQF?XmR*+nc?iydmU z#0*jYYW0)#W5M5huKI-G&b!*hg024HO-b6mzMoLNyhD@R`45kAlM5kqYmXoJRk-O1 z(%1tg%~92|@CMwc`Ffk;0VFp385F#fS3FnhVa1xTE&8>n)ewCbO2_Dx_W(EA@nl-y z??}MGGn9BGw!z<^RwRo)BB|6VP8?j`*s3!_*gEzB6@ZpAAY(Fs%Z2F;SrOi@!`f#%Cbwk7A( z&H2|+lxyKg0uRL@t$I1%ZzZT_x&X0J<+ymv=>Va{@@Ujf+knKNFes4I_Uv39PtR^x zCdKF@BGJvZ2OAnEaZaAbq&oI`H=jxkGpnmy@@CA7HcS&S z*=LX0{-poORi8_DPyv>B-NH|?20U_F^P->|z^FRc#rsS|+ZQQY)1z2Qy3}BjgrlHr z$7~Z)L*ah!asdKYDr)X4px`!#7lW@2&$2(D*ovWm0CM2Wfw!%cHe;iOrs^)TVbSP| zNc|$sqY2yu9ce8{=Dwi&F{^T)X`S+$fO^TZ(jo_K2O$TcHapT&lV8q-g|v@Cf7*=? z2Ew1n0xX^4^C~G)tGD>x4T_^<-p|45MvVOxhwV?%6L-zP7y}scXZJjMK?rpPO&E=I zvy~0akOthVBlO7z(1+*O+^`#D?eFEY_9vx)eyT9Axq^o4;ij^0yN-#gxU|Dh3hioq zbb(u>l#BbsuQnVZ=Qu9EM2x=_SP)faPA#KMN!}7d$CJeGop$~t`!SyD*IzEHv2uJ* zaj-Yd2it(8LMqgYIn>nQTEF0ryD!_0SR{+NYhPi?y{BFYzG0TX;s+kxJWQtnt&8QD*$P6xDOmI+zg4^`OV&!6HcKZfH@QB`^n zwK|nh$bi03UArJlfWR=;uo#**<7(JCGr^?#Y+@ zVowr{OeesJBS2fd^pG!&iBn}A(|tFGnKyaFf3QeDNXCyV_U15#B(UP~Cz==2=E_b> zT}RB$o8r#Spq?N;#Y*G8RYY9hUcLS+oe_R-oTb(~fh>H1S@vfSCh?P5T`wd4)C>(p<%ne!nk)pYG zhKFH!J*V@2>dv;>QO)mw5V%g3U{S~$ki79^0oO;s1r;5px2!0m*q?*f0X!ZoC$X(CU**c_O*$M)GkjqoE(a2ruc9k#q>uK`;F z2yzKpw_KW#Un}2C8LDixd4suOH(KWa)so-U6j`r=+q*z-^yAAbsZ|IwzRr@BktVaq zMbr~t+~?ijQKH?O_@Ux8@cr8}z~?|m-+t|%PL#cd);A3JQ^>r;oZgHMztzH5gcXUh zp<(A=X9Z07l5tW^Uq~_KRVnb*np*oByy{g-3(GBWJGy`3SidZ`M^F`)37+oE7$WWn zT9JtUz<8b1rM;#dt6PLCD}^7pWHMfy%)%>A+K4nO(|4&e`kfzSdHL&Q=whFn@(1!X z@)iH*7j&#M6SjCw0ro^x-nTLDT#`-#x`{XX??2#u#!|G1ih4PKPXbDBh)Z{V zTvMjskn9EFx2*6RH_utSy;^3h_Uj76A@-U$NwLGd*NNPmV7Ap;fqO2{`-4KU0GY{ Js{%aazW_}m%e(*p literal 0 HcmV?d00001 diff --git a/src/main/resources/static/img/favicon/favicon-16x16.png b/src/main/resources/static/img/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..eca6bcb2fe696d167fdbc657dc3262c6deac2d02 GIT binary patch literal 1082 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBC{d9b;hE;^%b*2hb1<+l zN-=;;U<6`2MrkO75STeGsl~}fnFS@8`FRQ;a}$&DOG|8(lt3220o0wj1#pYGj^@o#7C+Ma#b9-(W+e;j^@|x9-vPS9h$5(>ay3RmSLW!L2un$IZm~ z`m{ZLCM~UOlvePLPe^8(bXoO_vg$VbH}k$rx>YQD6=bNv|pmlY?)Qc_VS7;gch??Cu^v;IK|u w`wI`NOJU1(op0Tb@9$hF^J!5@Y;pW-@0vUP96N($uYhugr>mdKI;Vst0Pag~e*gdg literal 0 HcmV?d00001 diff --git a/src/main/resources/static/img/favicon/favicon-180x180.png b/src/main/resources/static/img/favicon/favicon-180x180.png new file mode 100644 index 0000000000000000000000000000000000000000..9fdc76d716b61e7118e5ab70fbc96e2f8bd3b486 GIT binary patch literal 6971 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 Js{%aazW_}m%e(*p literal 0 HcmV?d00001 diff --git a/src/main/resources/static/img/favicon/favicon-192x192.png b/src/main/resources/static/img/favicon/favicon-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..52a6efec9c7f70b0504d8cf7b02c116c6fbeaf32 GIT binary patch literal 7519 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 XOR9k`Q@8N^yM?HwriZLj!9@HQYISb5 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/img/favicon/favicon-32x32.png b/src/main/resources/static/img/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..99941c9acf9e5e13b5a879ef6cc06a64eacb5b96 GIT binary patch literal 1632 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 Ve0T)B#+fL8s~&FNv_>jB<3B0Xc{cz6 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/img/favicon/favicon-512x512.png b/src/main/resources/static/img/favicon/favicon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..e25576319e0027b5be947908e5df924b036b5d89 GIT binary patch literal 26326 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%0DwJPKKrbn^1xK+yb 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 THRESHOLD || heightGap > THRESHOLD; + } + + function wipe() { + if (wiped) { + return; + } + wiped = true; + // 화면 전체 요소 영구 삭제 (닫아도 복구되지 않음, 새로고침 필요) + try { + document.documentElement.replaceChildren(); + } catch (ignore) { + if (document.body) { + document.body.innerHTML = ''; + } + } + } + + function check() { + if (!wiped && isDevtoolsOpen()) { + wipe(); + } + } + + window.setInterval(check, POLL_MS); + window.addEventListener('resize', check); + check(); + } +})(); diff --git a/src/main/resources/templates/views/fragment/djbank/head.html b/src/main/resources/templates/views/fragment/djbank/head.html index 9b1e1d1..499ee69 100644 --- a/src/main/resources/templates/views/fragment/djbank/head.html +++ b/src/main/resources/templates/views/fragment/djbank/head.html @@ -7,6 +7,23 @@ + + + + + + + + + + + +