From 4a9ccb5523e2aa3013708216fba211b2aa8bc2e3 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 06:10:41 +0000 Subject: [PATCH] [U] Update channel content --- exports/hykilp/atom.xml | 16 +++++++-- exports/hykilp/index.html | 2 +- exports/hykilp/media/3406.jpg | Bin 0 -> 58722 bytes exports/hykilp/media/3406.jpg_thumb.jpg | Bin 0 -> 6363 bytes exports/hykilp/posts.json | 41 +++++++++++++++++------- exports/hykilp/rss.xml | 15 +++++++-- 6 files changed, 56 insertions(+), 18 deletions(-) create mode 100644 exports/hykilp/media/3406.jpg create mode 100644 exports/hykilp/media/3406.jpg_thumb.jpg diff --git a/exports/hykilp/atom.xml b/exports/hykilp/atom.xml index 068e013a9..cb694de6a 100644 --- a/exports/hykilp/atom.xml +++ b/exports/hykilp/atom.xml @@ -2,11 +2,21 @@ https://aza.moe/life 小桂桂的回忆录 📒 - 2024-02-26T04:10:48.463405+00:00 + 2024-02-26T06:10:38.056266+00:00 python-feedgen https://aza.moe/meru_256px.png 「我们所经历的每个平凡的日常,也许就是连续发生的奇迹」 + + 3406 + 小桂桂的回忆录 📒 #3406 + 2024-02-26T06:08:45+00:00 + <p>今天把 <a href="##AquaNet">#AquaNet</a> 后端的请求验证写好啦!</p> +<p>因为官方的游戏客户端给用户提交数据的时候并没有做登录验证也没有做机器验证,所以在这之前只要暴露了你的卡号别人就可以随便发请求改你的数据。</p> +<p>今天做的请求验证实现方式是,机器 PowerOn 的时候验证 Keychip ID,给每个人的游戏返回一个独特的随机 URL 比如 <code>/gs/{token}/mai2/endpoint</code>,这样就可以不用担心熊孩子发的恶意请求追踪不到了!</p> +<p>(不过还需要想办法解决 MITM 的问题... 毕竟街机用的是没加密的 HTTP 80 <i class="custom-emoji" emoji-src="emoji/6170424195260877091.webm">🤗</i></p> + + 3405 小桂桂的回忆录 📒 #3405 @@ -99,7 +109,7 @@ Mom: we have 双层麦香鱼 at home! 3393 小桂桂的回忆录 📒 #3393 2024-02-23T04:47:28+00:00 - <p>AquaNet 绑卡做好了!感觉写了两天终于写出了一个完美的解决方案 qwq</p> + <p><a href="##AquaNet">#AquaNet</a> 绑卡做好了!感觉写了两天终于写出了一个完美的解决方案 qwq</p> <ol> <li>绑卡的时候会把存档迁移到账号上</li> <li>如果账号上已经有存档了可以选择保留哪份存档</li> @@ -179,7 +189,7 @@ Mom: we have 双层麦香鱼 at home! 3373 小桂桂的回忆录 📒 #3373 2024-02-19T12:32:08+00:00 - <p>今天把 AquaDX 的注册登录的流程写得差不多了</p> + <p>今天把 <a href="##AquaNet">#AquaNet</a> 的注册登录的流程写得差不多了</p> <p>加上了 CF Turnstile 用来防机器人,加上了 GeoLite 本地数据库自动判断用户的国家,写了登录之后的 JWT token 验证,注册域名配好邮箱之后写了一个「验证邮箱」的邮件模板。好累 <i class="custom-emoji" emoji-src="emoji/5445059765778521446.tgs">📦</i></p> <p>...结果注册一个帐号测试的时候验证邮件还被谷歌标记 spam 了,不知道怎样绕过。</p> <p>感觉写自己在意的项目和糊作业需要的精力完全不一样... 作业要写注册的话随便把用户丢进数据库里就结束了,但是做这个项目的时候每个 design decision 都犹豫了好久,比如需不需要用户名、注册的时候要让用户填用户名后设显示名还是填显示名后设用户名 url、用户名字符要不要限制成 url-safe、邮件验证要发验证码还是验证链接、要不要强制邮件验证等等等等...</p> diff --git a/exports/hykilp/index.html b/exports/hykilp/index.html index d753923dd..eae35f615 100644 --- a/exports/hykilp/index.html +++ b/exports/hykilp/index.html @@ -27,7 +27,7 @@ diff --git a/exports/hykilp/media/3406.jpg b/exports/hykilp/media/3406.jpg new file mode 100644 index 0000000000000000000000000000000000000000..46fc827fb9d564eef25f784aaf404ace4ba6e111 GIT binary patch literal 58722 zcmb@t1yo$mlPElB(BN)Cg1fr}hr!(m?!jGy1SdEQZi5a48=QpT?rsSh7$msEds>j8M#f?HLTmNrw@ zRFhK#%Dxf+0Ju@WE5J(v0M0I+?wax+-su|{z61Ox_-N_j`k$)*6@8U)y#RPE0f1RH z4NoMj|H|Ki+PXz#g;3WWnko+HQ78w9Q%NGEEcdi;w6$>Y`0|HA(ND_&Ls(f~vRgnvGW2#83Ch)Bq2Z;)RB6BP{w4GR++ z8w(TbEe;+rJ`OGs?prJZasna}5;8I}Y!s zVq4t)%rtk~J+qvZnPRB?UcxM9{XzV4mF>+Z?YrBn#zepAR`V8fZZj#Fvc0waiL=W# zxeyQ$kYRc|ol0JE{3f6go}>J3hQ2xc&3d)%*tq}M7YZ0t!hE)#SR3`lX<@02fG^jI zYg%AOskwLo;7g*^p79{JfUXl$c0U0T8HV2Ku4?4|LPUQVgF4&>cmjf;pp9c zh0%;7S%>?(ViU9&4FB}Z*u^{QaQPB(7QSQ)F@lN1)AuOeZvPJv|5fCFt+SQf1U3%{ zO9iBe$FT3Mik&M=++NJ&fo3wzZ&F*kcB+FRpU3@Zm~R$K*L#G>HT?rl5jH6aPBn5* zYj5cye^mO%lvCm54${e|$}e-|{xt2Ms!$Ol8>A>jK!Ht%>@1&{tVswQZ({oE&*(i)h~Pn{rXF5w-nX$XXC- z#Jjog7kQv|36AADkG&xA&!XZ(|JUyPclX+R^D~?|wGPIBrdV*lSVS&$F<3YUy9rv>hl0a~JP`-CqDU4le+(|DV$Q z|5llQBeIEH1m*`!Dh}fKus{bzk$;wJg@aUVxEcOgm@JQlE+o#z15vPPtI*cczS%1CTbYPU9j-_*f;9 z0_PK3yvY~YYC$-UnD5FOps&1RvBrgNEXn$yt;nZg*&bf!i#M!poY)GjU<*)Jo`nC| znv>N(au(JbgQrp@k3u)fBr$7*es!M zgfg4Pdew(X&;B7A!s2Mdz1Gvv%zUH?7W7~pLg6ah}g&qx=k#W$p_S zeKXlyLo9xLZ7%-Va?eb8`TVquigzvdZgBQKutPN&t3{YmJT4rrBTM(VNi|9=QK zDCzyA;|oV-Chwbj$1FDAI*NxOqd)!@24x<-DO8$FuR%*q)l9`K4CXyNnah25!l z9pgY$8KeJ4qW(`NIB(;Hwo9>z_e<5_y~Ur`0iU`U@&Ru>#pf;yt z+4N=e;r(IR9%;|F@pe+a$UujFLr!>f*o%At6kN`g4MxI$9q9v+A!jT%d9WtW;n&illaW6-U|M^{XD z(%HN6M0i)eTtv@S(m~uZQMco1CuNpWo*6)U6B~6*^aXq6*KFb6sqwf5&|DAGUM6>GF`wekI|Gg~w!E#39827!&soQ$5iDKV$ELvk38iZ2 znD;nt$?MaqG0}IqSleluncqW!Oq7HzdaU_=2fYiQloFq)oIBN9*Ys$@6yNZ*Ci^}{ zNre~z3cmqzr+*z}$|vmbF0IFJh#9&co`na-*Y95QaQs$JsFI3dBT7|Q?~SO>H0 z>SF4H#$DV5Qf*G_P0e%=6l`pt=>0S%VrAzp*u8^~-JAWaMNV#z6#TojVksKpJ;kGk zK2KC$w39m!<2}@qd~*yiNcXBv4}>+Ko}fLA4f_BwPvUaxZ- zyuW5%-mj{|G9jo@5kl1a#jH}UUGlzjw$j;K^FohH^!(|)k4+elv>xly5kW79bLtHX5HOIFYp&b>X&sH>(oTytnibo#? zIb&LXdC}2UQscS(sPFrr>WBM)l23&MdPe7Tr$49u*EIpP@At!AI|!(y{~)}>+A{=e zjp+VKcZl;UPbAcb4&D?NBNnanuS0o|X52hy2`QiYb=KLCVRgeUh#u5hK>dYxMx3*R zn0x*@(O9(Ve@V9a9txmbOEtcO?M#})x^#9Qs5$vec?O<-m%{lnpCFBucQPiy|C>AT z-k+W!L?zdz_fninf<7&Z7t~AC)jgRP#9%xAa7n0^0&^_Eg0OstIPFHeoiKEEuhu9+sQL6@IH9=Zs|F0kJ*?1 zuQE=Mz?;d3x)n=)i%in__IcHLifu{?;J5#aKL25TjceGkU!y@dq}N~u84mF^lKCgB zK|loH;NsyUVH3QgrlI9BcctUx=8=+B4}FbxP+nsoI3)NNz&Y~ZS*U7zK``c(LC2qj zr0KM}#c;R#BX3$~RG~$!ud|+y0KzG<{Mgg0r95VyJXZ_fy!Opth9slYo@gE~XMoxi zlQ6R+ngXEynQ!6Y>N^FJ1q$uoD?tk9TIe(xMa!d7S#u8*7W4u@-pq)o7zBqhXA0}E zhu~JaOKCx00HL4D51^Z-n1!XVaJ!MXTDE$*H{nPxfPIL%%z{Pv-F@nVzCfD1!{0=0 z>!S1|fy#|I&p3ZuMW`H+;|`FGdv~N$h1thX^xkh!WmR1yNgG-Tc(;h zvijgt%sMdUZ-&gnPjDBP1OAF{S_(%nqrozT81X^j1?YaqsSQuzf!^h zv9;w*+KO*{T-6K{T?2*bMNN_4i2hMZV3g9dyN*j8?_ja3c+zEBX9mPhi0BNmER3zB&(cyL;ht1fc&e(d` zVKPykJTAO1H%nZ-o6Ag2z`{z=Yn`@qB&vY=ZCOUuMrA212hWgqK;i`;Q5lQUCNcPH z%QwP;KC0I350(z}#IH5CgcZ_AAhWn+LV&lKO%Hb|pM#HX0qrt)WWVeVm*jl3 z93nEH4|fqj9vFsh#Abk^+lA!h(MvF~6_bUN=*RN{fQ$abA>#f>9s=B&Ul8p$dI3?^d|^GAi5U_H0|?jgN+fzXDdX7GbrjwYUU%feRSjwO3iAbIwerZLb?^Ou zv)_YRcx~fGKBIk1hf7i{s;RG{3E!Zv77YstX28v^?YXE zm15sV4gxT(J9T@l7ifw-v!!vh zD{SoT>^Ct;egM`pG2}MoPtuJDanL-PHYq6lv>F{ay!}gmc!qMut8y^V&c%&SIC#tD*FcukV z^Q*jSO?30if4K|cdkAF6(!Bk6Ak@ULsBT0LsZ*n$+0}61!IFpOcCmYME8*m*cf%a# zRhe=;XE|BM{$5XY@sNz}&R;I>7Uig`dPQH)Hd(3L?GW+2ijwYE{m3Ph#xOHpCyg0! z+%{HCyF0&GA3Gi1;*p>%Hq*;AFP6S$6qU(eCAP3w3o@>%_J(h$Ouo_z-_yA|@TjzE zs%XPkzr&Jrx0@+>Q(ktt?6TrC0_|$vKK;%i>*;YccGqNiT1T5Kmq#oT-(EGcCv5y> z(fz=kz;j-1(cgnmR{ASRM`mby<*|ytUUoy8acHR(u+KM6D6Ft5AMtcL!*6azz$ zzueR4_fi*b$*K0R0|1#yQu(=Z71oD?lbRr5p?8TpS_h`$1(R)_+}AXR1holZb4?$= zBokhDlcqLptiy7GA#3`v6{m8aO93@#USvu!qcAdV|IcLS^RSm8Q z2&)hXkq5i~L}mb_J?IA(kR>8?egS|IDypL7$w)jcBMhfR$G}FkCD|+!yBOT_)t*}v z)X~iT@Cpn}OmB|`SR-X{Rgx69SO7_hqbPH9_p7CQ%4L@KDj8=$3ytGPse8(?`06A< zexZCOmkO_Ji<4doPm}k_hL!z2T!yQk7_P+`oLe64668GXTYlr&NTLU!F#G4K!R|AS zDblq&yd>Ld?Qe7U>Nc&gBsvDB996*rVkNm=VvamFg^@;*K*eI9*fy$!@HeEwlVOWmz-(=5r1>CdM9p)Da_COj!f0 zLHXc_=d3v^DD{qjdLBUZ@y<)8J?OK~>cF-M!E_{?lMm)@i=ib?WhAd_Ro#AVXUmS; zl8Wm|-_{a!f5pcnEpUHT<1n~L5l>plFRQSxoV}cBuSGn3hLhF6YP=|1j)O3F7r9}Q zF!3kr@IJH?3Uks!I%AB@n)AMp(2IEpO#8)IVZY2Ft1#`bB%rMh|S3HA`jQ zx`4gDp!8U^-{n^I3q;?!#xf%l4-j4Cu{BF!u098%*^*S-xR*O*=bo;S^t?YsV$$)0 z7u;Sf9&Zuei)!Ed`+5JYVr2P~%T`T^>7F5|L@w7aw{DJu4}a1YD|JcCv8!@j_uU`s z0>KG%xv_l?H)VhQzTKkYJ(4omrm_(z#Kg&+Z~t9q==30SND_Fn91F*ts7F;3aLcQQ34s39z8`+)DktxT0WhMxv9fSx=plvcof@wv6f#_}_)=Pvy?iZtb&Cl+vTe?)@TXx-+^jHQFf|C6d3FT#x}k!gYEpP zf{C5vf0owhZ_hF$b!L7QRrGuiWvYy1k6Sax2N%QZ0aIY1@_M!3bbgT$CPIP9vwkqk!56JoxCC6hczTiYMcL^%l zseV=H?IG}vEbh^ZZbK4pu=#cr?2*LXa1cA()SBa~bzi#ajs9vb@MEUu)tG_jpOFE@g-N zu}giX`Zi7Ij`5CG_Da)nVdEF$cJ?ma&1qFy=Bo9{ma5L|QO9LB)diR?OP$V#oJM>7 zA|v6V(Rv2@QVdY|rb+>Q)1swUtqRVQ&hno*i@qw8y>gleZ}F4_{>w%C>Cz1letJIL zMkEnU^x9I@&OGr(d^mkk+L?`u6YK9MzU@Qk)8*{W^zd*svy}$byh){8wY#XT&sTvG z2FH}d*-tv2Y4$DP4y8ImA$-O*d^ui=>QrqHf0FpBsClY}{A$N(={g;+Keh8?5XXaZ zyljg>`uKA0KBz1SlUy|#C*`R7<>DuurpaO5OW7-6dfq6P_p2^Zmn<;obJaoBX`QT(1J6N&!#$B#O1*UDcY_xIF%A@Z zfBd|#d5Tm2NQU<`QtvWXFdatWfVv+5Sy{<~4z9g3)%`fD{ zrNnERru=D9}({@QlqY9_hoTX*~TfDka7t-BCt|^Jrh1TXE45hD}W(66AI>Hs&VL~3VKiQxC z?S3x_7ed_eyGVL$r{h8Bt+hpaeHP0dML8-g{?<4DK+v)P-mHb2+32OZV4>ab- zJe?@r;iHez1)2zh<4LN_D!&jDbR zpf&AICUd_o)vwyc)%qqyiSXpDbU)a%N&ws7w5Axr(vEr_1}MQtJ=SI+-eE^|5*O;Z zSi1(A7=A{>H7zwj_o^CGl$FVJd?&~9pbsyLOfJZe-|P2|*YdrB8g!J&N`;!{^a~DL z5)_z@A8l!^>pL=SOzvIv#}W1@L#%*Y+jYE%5z9z%$y z)NMGCoLP=iNGlE?Gu0NcDoZUVc&6{WmmQA=;vghrr*yB{c>(yd8Xdk}!S~W6gMEJ> z3qoCc@_r2ZR2=_iDrN8wMW#%K#F{j&eV_lbY)EOa+s z^EgrQ+1Z8ke7o2S2BDQ@Hq2ILYFg;RhPJ!EK~$UZQ2w2A)32B$=e zs(PxNcSZ~|8Qod}`NPuQacWZnCZD8{j`ixpz=}a5=Lg9TE349@{ zb|1=k&pcf+w|k((P3&2h9zY|7D~Y!)Yf=-P>5IsV$fUmQoRMhkBCXtB;>sR8ZnZ7z zZVs@8hriD4n{xOlG&>;@Y9e2kE>+Yh)5?`y&*!EpNqsd)N=Le!JI0D%04^shmhZj@ zkc;#bLVq?LS!}k%W$tO5QydcK)Vu)RQHodGV1$B_hX4BQ zmQDw&qxmR|t`t3Q-_cvL?q)P{WG*3VLX0GQABaGKvBexCPNNx}MdxC&9{OB&h&jq) zyza?O+#<$!K#GoX_hszdUhjq0E0~B~%#_ z`KgBya0jJv%T1Lj$PFu;95|-7oy))ApP6N*bgB(5ejBt`!)^t6t6PYq|7=9~^0AKc zcn3Q8_6L+r8$(x!mSSuIM;V`5mGLq@Sb_6Mp|`RiaYb!=#lK?otjG#r;_&68GC$Jki`r0~N+d}GClrf@qrdT6B!O>5A_RQT_iQD)BdqYU?Ckf90N-ntxt zQoIPxHZ&9GfrubiT!K)+V=(@~XjE04*&D-wz*u_Nwj08pc|nMPGva$(@gsK@>hy(7V$SeTo2;9pbs>gMF2?_Y1UkWQQ%oy9pvbieV53VB8 z{MI%YqU>zESX-Vli+YZqL$3vf*mR-0G=4XJiuZKaKlHJ$A7O3m075l96ULOSMJD{@ zfXnPN`C1B4Wzj{ZRMW-9=1ULb!!$l0X3sWH{QxtMJQaS&4yXww+M1UDEX48r)P=*g z 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

0^xdv^0iNO$SK<&c~KOleRZi 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 LcI^KEz#sqFj~wW} literal 0 HcmV?d00001 diff --git a/exports/hykilp/media/3406.jpg_thumb.jpg b/exports/hykilp/media/3406.jpg_thumb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..055e6532f2137846ceaec653799999076896af64 GIT binary patch literal 6363 zcmb`JcQjnzx4`e1QKJ(vdh`gQM;Q#lXi+A538L2+B?zJg(Mi-qv>2V}B}hmxI?-!_ z!6?yt1W&$it@r!A_s?5zt+($zXMN7z`|PvNK6kBquBNUQ07`WgH5C8^0s+3)4{)^v znpIO$vd}?ltEg!zUmE}b)CXJ(9vlE%-Ml=I2t_s{V-q&u-^9w=)BWFu{}Zoc98Un( zJphaf=z8H({7;AfWlZdGz2LRa?scQJ|A#@4zx?Dsnf@>Pc)5FB=gR+=t=&ETGW?oJ zJ@k-D*Q|NXZ1(@gPyUT)hwU{K)~R?F9Zz1hd}TNNC*k8g^ZYlh=hWSl9Gaqf}Dzm zo|cOG7BxA=O{SZ-pio9eMoL;{R%QlPdIm;@zd=9{e0&0Y0#ZUkQU)ptDu(~FT(tpI zM1VF34hFFUcvK)T73iu1V7x90`0uCqUjl{zc=#X!qHCixC4dJ4gFyt4>$LIz`hf7j z0E7yk`nE6)yMnG2idG~f=_ZF_F7ip$E&-?L_dPm~(7eU=>$&vTLH}Fae|k1$XA>UATw-&Zu}kSS2!~->`qcl#%xg=c!e;E# z!!ezf{#Q>7_>5EwlP1AZ@&_vqq{(&>F9u~_!98aSy|U$e3#{XLYF`~cN4?nbE3kD5 z5*p-dpjIsB5U2~G5ec8>U>T}Vg|2xn!FZ<`niC znYfc8v{sZa<>w9#X9-BO)-9<8R`q-a*_95RJ|^es{#k2oWyW~aaOP-zGkwK*pbXgk z&vaGx_?w}m8TmOK)`zz!TJ0s>e$H{^>Cny`bDmwVkVZbukFloOd6%nRZ*@0 z#n$zR5y~%~FEFLNf>@Smt^qugvQnEP#h$r8W)LXO9(p4paswN;R-*PD3f;GPj_7Uf zmu53zjQFIsAPXMoqa|2iQNo9639^+K(ttjXeEZ&DYee&uMGfcyUcin;;_1;v2_oOT z*P57~TRW{qYJ2-&|KhY*BHcA0g>YS z6I9Ddkxf9fnUPN(!O|Qt;lPZ0p=A61uG~)(uv*?@Wt#3js4^#WburA3^gvHqd1m%_ zRs2_FA-nP*BLtOsI&P|Mvx#!?pK41+Z8#k`21eJ2Z@t53^WmD)Lg)bNaEsqQI@DsW zOiml`x<$Jr56+4x^5?nwQ#)_f#rfP{6%@v>;RuV?kpfca2sJtOX%cUhbb`%z*k)+~ zojvPK2Z>M*JNlzfapGAmf`7$r|w3YN& z>U80EHt(?6sI?7BpIOUKM4cM{`FQXw<4w+1B+I3_1IJoJQtq=jl2F7mJ?li#Sa4Rd z#HgT-u$PXWP27g|tWf(dM%O_lp~-<4Mf_r> zqb_cATtdP5l_>$wugfsWK5~!S|D|fgre_q$+syj_cDS2I##EJ}eDq2fTZSde=D=P7 zGw8uo*9wTmEqfu34EA)9c+uElZ!wKYM_P6;eV?5kHW7B=P<+Yq*#oc4n9s=0iwX2* zYy|tz&b1WfHb2}JiA^MzJzLkKqo#Vl7r!nku(G&g8f_A|n2{d39dVy;9`V?zc4K|8 zKbrfc8>dY@&_Y(6|~Hgqn*!pV2*`zI2;g18v6D zH~uR{-G8@1vSZhC@eA5(U4%ekcJ}=b*+TG-kI@(0zmFBsBFC=uv9(EyvrPBp$ne@ELUW5F*QForrSW9e2H2(OPuY=#APu{u7 z?8&W2K^MjtG|IHCr^NGzW!Njhi+V2elSP}G=5>=5Z%vK1d7^H|>uA(fOIhGyVzXoe z_!3w(^ol0PnyO_)u)UG8o*3`yS}u% z?X8Lp2OHXAS|I&~Er}|?gP7SJaVhW8oZ>3_kVt)#cPJ^GuG*S@Gt+;Bn@EnWEA93N z!YCOL5Vr5*n56cndP_3`r}Ue{oeY;3h%FveC+7DCEGXj=&+^s6%Me&XQ|~(0^+|r z2B*A!nI*FX3cX0?fY85;LCd_OCX1V6c~Ms$==A0osePIm_X9aHi)Gd#gk@$u_s+*v zzO-^h?yLEbMut80!X7qrx#g7U2P;f91o&nvoR5k+{?>F_m9^N4*!9osV<=9r+F%PMqiw^nr%rDBgHF-NS=8%Lkg z9`+~OE-5fkQQ#&stJA2r^zrN-` zSFHJ7dY3=e)&2(SpucE17Iua*^S@E_EkmFHo<9FcL;_b3xOS^pQ#O3e`IClYlJ9aC z9EUdc+U&B`ugk0CNc{!l?6wvhxUadIB zYE`tk7F4yJus5Wm=5vyg;1Ut`fUvL}-<5|3L1|vy41~Eey$KnL6x&c{d^KBDLn7Mr zupPf~4>$R(Hzk66a2x+wNSO4W5wi3_nGP?O7b(puw^v76W~Tm#dCeQc=c>cWu)JL! zfq`Ti=JyR66P5%ZW#H0nW4KI&&~qGzJ8mMw*@2dN;*&d`7Aim+3M0P)IO6LxoF6o* z<;M%ii6@PfXm~eR?&+qocECI_tyb$E<~%0Cb5MU3suY?#jYz*WR5R!Evq|m|@5E7M z>26I+vFOpT#rDl1$OW0WpCg!fW2LcZ^3Km(P0i!;JyL>`_x@~NGK23oo7hSTHYEFsXS?86njUQ?0tG8m>zS0 z8uQM}HyAv|Es9lE3j+7!=C6R}*2Dn6D`16%S#Exyw2VPvy2%DHb{r`Sa@%cN_L3tM z*L^P+RoYpp`O-H2=g^}e&g^%?2kQ!r)nhqv3^-o}?#}+4#i4?rw2wK3j9Q9G#ew1) z8tl(P_fQKUjw0}D3Z=Kb5}GynDn=gtx7gwE9*)uc3jjE7`5GD+FPO>zo9-^qeLAwlG4-G%n zIV1Faq80m^g}a%^Rl5+-r4R*_SWH~C5GJWKra2^2o2{p3C+i^r8uWO{k(U2;bI}?! z3a`;VIheEp4v_DyNs}jH9n-($ko6^j)-#bSj< zq&CMB5-eIxmkPUN9ECHnew#SOVz{TDhsGP!ogW_a2S4QOicVMpVn;{>6qs{{}7p2#_%Y zW)YpF}Foin%%JDaEfjLOnH~3d0sS==1V(c@IunH3II>L#_bu)`QdL z_#ingU)h6!>uoCcw-r-2@<~+C@4`w7jOl^F4)WlJ0=^VpqMF|HX^skMtEz+@o*kW` zyKV%C+n?R`a6fmHiWPiP)rdu8gk?QCaOZ6$HKLhSoD1Xuk?Jezg!3P=*vbXU5NA&; z17IkHmz;(|t40|<#r!&zOsAnz$AwEx!g(|(=}IJsZgXWw>PV~>c?D$G``V_YtG*Ob z0fU_o}8eba;x@SKF;(yx+!22L!-6tn3Q3}GHApc zdb$WF1ZPhrc!;-w?|REv9fUpk&~bFpxLWG6&Ux#h?8= zV3Tg+c)~7Abyi(bWjxO1yKcHB?e^2sUEa=jtt!9aHrx5BNd>iD5jw0?0iN z%hjH8rT#b~8{em!?KLhby%)a(++82@)iLol-X`@)dySYb`Ox}yIrsxqQI!cF2+P#5 z5qRHB-(c}IH!^7dXVVq%QC^+haU%YfbX|!sEF#)Xt~;p8Bw}lBrncdJx*mr-r1kr2 z|IZn)^S4eTCju^Xzkl;UwuBv%s@9|}6D)oW`;FB!cq^U0ByKM9dUJOtoa5I+C0oFN z{qh!Dumpx%_Dt7w^Eqb(yEx-^hs@3SLJr==PoD7}bAE4jRL#xIM5^i#@ewh_ zlEv?2OWwn%M-RRo`5~F_yR(>FYNf0DP3T|+bv{h0ep`fCuQD( z_HobOL#pD2%FULdnG97L`7xfxqYA54ZQ-bY~QANXUVpneniM|Zj57kVr94L240qYOF}D9 z^5}-O*I-fo=q*%=F0=;=3*^hD5C&dlhJ})k4tic#qEd9{+O#`I&fzh~YYgknR`%Gu=Vzp^^)F!@5GZy#Bx4r#h4IddRAV{pkmY90x zADQjc^4xp5r2J;tc9}ccnv*6Ib@cc4;^OwsZr1Nz?U^uCrnO~5Af+$-&eOXDP{{4& zAe+E75HiDDdapOU_I-@t0tAtSk(*0sESAXjaVwjotLZ3>>s;a^oYRq*OpT{hJ?WQG zm;v+3e86%H|Cu{j>_pj(a(MY7kGW|Gx>MBj=-1puriWmL z*71yK6qEQSf-~f2Ku&Xm>{39Nc6Ptt!LTa>T=fqx0Yxa;WYYTN?3M<)#b9?1{Ue*P z$CVGm0i9x=+ZD#Fy9FxSPB{snune2VVguyV6yITK=EM(Dk`biBnZxAK5v4 zy%VoPF1e7^xIlq+bz;Ep%Eq64yp}kdSJKV8)F%SKCEJ&&;mgQ7HfbXBT=j2QkhF;( zI~q`0b4*z+pZ4INoc1y}9Np^pJvf;^W8(FX+t!)k^PE944dtG+f!ht9sVq!m+DcenUm13WE1To+sYEocX3%#n8z_8>&D`|63gSRv7jeukEr>b8N$5hZ*;9N zd0_$HUEeOggd!8dl-x93dZH>C$!@c_-k@X5Xf&o+q59|e(Vb3aE7#CXIMx%p(%$J;lFab>rzvCOYJ>CIzUN)B#eB{zRTm0U z{m&BpowYqhZv6Mj$0${_UbI}URy*l9&u+LAZGRSgsEByy2Jw+m0{wXqmg$Q+F6}E- zxRVk)lVuZ7>0CY=JUF67pt^l|ahDEF&@;B+{?+e@htOR<`{14=#NS#rz&XicTID#u z?v%=H4yi)~p~TBXEf8OnvY-ibvyH3YO5V&i^a$>Hkd_ll z=U0S?<8_4Y+k_mppA6XRVvHlj<$5 zUC>ba=H}w2u|BVO8Zt`aLE8PLImHcx^KhkAa8uW4QWAFH@hGycz9EX*T#F;KJIM@R za~Ti8qSRGYqT|w2JevpS$Bkiq=dj*wU+>80lShW=o2wI*9b*J@1Xb|1vYmMMSYCj) zjBoNv{4~;|d8aY(kO|+^PV`Ud@8pHU1#4EP!N#$Vf|IV}a|ackQC$3@xSk`llTOgp G^nU📦\n\n...结果注册一个帐号测试的时候验证邮件还被谷歌标记 spam 了,不知道怎样绕过。\n\n感觉写自己在意的项目和糊作业需要的精力完全不一样... 作业要写注册的话随便把用户丢进数据库里就结束了,但是做这个项目的时候每个 design decision 都犹豫了好久,比如需不需要用户名、注册的时候要让用户填用户名后设显示名还是填显示名后设用户名 url、用户名字符要不要限制成 url-safe、邮件验证要发验证码还是验证链接、要不要强制邮件验证等等等等...\n\n总之好累,又写码写到天亮了 😴 如果自己不是这么完美主义就好了...", - "views": 65, + "text": "今天把 #AquaNet 的注册登录的流程写得差不多了\n\n加上了 CF Turnstile 用来防机器人,加上了 GeoLite 本地数据库自动判断用户的国家,写了登录之后的 JWT token 验证,注册域名配好邮箱之后写了一个「验证邮箱」的邮件模板。好累 📦\n\n...结果注册一个帐号测试的时候验证邮件还被谷歌标记 spam 了,不知道怎样绕过。\n\n感觉写自己在意的项目和糊作业需要的精力完全不一样... 作业要写注册的话随便把用户丢进数据库里就结束了,但是做这个项目的时候每个 design decision 都犹豫了好久,比如需不需要用户名、注册的时候要让用户填用户名后设显示名还是填显示名后设用户名 url、用户名字符要不要限制成 url-safe、邮件验证要发验证码还是验证链接、要不要强制邮件验证等等等等...\n\n总之好累,又写码写到天亮了 😴 如果自己不是这么完美主义就好了...", + "views": 66, "forwards": 0, "media_group_id": 13666767423210717, "images": [ @@ -45958,7 +45958,7 @@ "id": 3380, "date": "2024-02-21T08:45:34", "text": "花 ¥95 定制了网页上需要的四个图标... 虽然非常非常想自己做但是这次还是不用自己的时间精力挑战设计师的饭碗了\n\n现在我需要专注做的是在放假的这星期里把 AquaNet 写到一个能发布的状态... 看最近几天的进度似乎感觉时间可能不太够呢", - "views": 57, + "views": 58, "forwards": 0, "media_group_id": 13668041072892629, "images": [ @@ -45998,7 +45998,7 @@ "id": 3383, "date": "2024-02-22T02:47:15", "text": "今天和聊聊去 Toronto D&D 的活动让一位有经验的 DM 带我们开了一段很短的故事,真的有角色道具和场景的模型能看到我们在哪里在做什么的时候沉浸感真的好不一样。\n\n感觉这个 DM 准备得也好齐全,因为没有花太多的时间读设定,整个流程快了很多,三个小时就把他准备的故事打完了。\n\n而且听他说这些模型都是 3D 打印然后手动上色的诶,好厉害(不过他说这个精细的打印机居然花了 $2000,好贵!\n\n在想能不能用软件做 3D 地图... 现在现有的 D&D 在线地图软件似乎都是 2D 的,在想能不能做一个 mod 把 Minecraft 变成一个 D&D 地图的渲染引擎(不行我开太多坑了不能再开坑了呜呜呜 😢", - "views": 59, + "views": 60, "forwards": 1, "media_group_id": 13668560279975101, "images": [ @@ -46058,14 +46058,14 @@ "id": 3388, "date": "2024-02-22T18:10:43", "text": "感觉日语片假名真的是谜语\n\n刚才看了半天「コナステ」没想明白这是什么,然后查一查才发现是 \"Konami Amusement Game Station\" 的缩写(???)四个字母分别是 Konami 的 コ Ko, ナ na 和 Station 的 ス S, テ te.........\n\n什么密码学 (╯’ – ‘)╯︵ ┻━┻", - "views": 64, + "views": 65, "forwards": 1 }, { "id": 3389, "date": "2024-02-22T19:06:38", "text": "#桂桂今天吃什么\n胸柿炒鸡蛋!", - "views": 52, + "views": 53, "forwards": 1, "media_group_id": 13669030388740173, "images": [ @@ -46104,7 +46104,7 @@ { "id": 3392, "date": "2024-02-22T23:04:15", - "views": 54, + "views": 55, "forwards": 0, "files": [ { @@ -46128,8 +46128,8 @@ { "id": 3393, "date": "2024-02-23T04:47:28", - "text": "AquaNet 绑卡做好了!感觉写了两天终于写出了一个完美的解决方案 qwq\n\n1. 绑卡的时候会把存档迁移到账号上\n2. 如果账号上已经有存档了可以选择保留哪份存档\n3. 一个人可以绑多张卡\n4. 绑卡之后每张卡都能访问到同一份存档\n\n这些都是官方服务器做不到的哦!官方服务器即使一个账号绑了两张卡,两张卡的存档也都是分开的", - "views": 72, + "text": "#AquaNet 绑卡做好了!感觉写了两天终于写出了一个完美的解决方案 qwq\n\n1. 绑卡的时候会把存档迁移到账号上\n2. 如果账号上已经有存档了可以选择保留哪份存档\n3. 一个人可以绑多张卡\n4. 绑卡之后每张卡都能访问到同一份存档\n\n这些都是官方服务器做不到的哦!官方服务器即使一个账号绑了两张卡,两张卡的存档也都是分开的", + "views": 73, "forwards": 1, "media_group_id": 13669309190349189, "images": [ @@ -46292,7 +46292,7 @@ "id": 3404, "date": "2024-02-25T09:33:02", "text": "在网上和群友争来争去真的好费时间... 明明不好好写作业就是为了省下一个小时的时间,却不知不觉就因为吵架浪费掉了 😶 也没有得到什么\n\n明明以前不是那么喜欢和别人吵的,明明自己的观点和别人对自己的理解并没有时间重要,明明 todo list 里还有有生之年做不完的事情想做... 看来以后还是要多注意一下呢", - "views": 40, + "views": 41, "forwards": 0, "reply": { "id": 3402, @@ -46316,11 +46316,30 @@ "id": 3405, "date": "2024-02-25T09:39:52", "text": "和聊聊聊聊,聊聊觉得这种程度不算吵架算「激烈讨论」或者辩经 😢\n\n那这样说好像我确实没吵过架,不过无论怎样都不想和群友对立,也不想在这上面花时间...", - "views": 38, + "views": 39, "forwards": 0, "reply": { "id": 3404, "text": "在网上和群友争来争去真的好费时间... 明明不好好写作业就是为了省下一个小时的时间,却不知不觉就因为吵架浪费掉了 😶 也没有得到什么\n\n明明以前不是那么喜欢和别人吵的,明明自己的观点和别人对自己的理解并没有时间重要,明明 todo list 里还有有生之年做不完的事情想做... 看来以后还是要多注意一下呢" } + }, + { + "id": 3406, + "date": "2024-02-26T06:08:45", + "text": "今天把 #AquaNet 后端的请求验证写好啦!\n\n因为官方的游戏客户端给用户提交数据的时候并没有做登录验证也没有做机器验证,所以在这之前只要暴露了你的卡号别人就可以随便发请求改你的数据。\n\n今天做的请求验证实现方式是,机器 PowerOn 的时候验证 Keychip ID,给每个人的游戏返回一个独特的随机 URL 比如 `/gs/{token}/mai2/endpoint`,这样就可以不用担心熊孩子发的恶意请求追踪不到了!\n\n(不过还需要想办法解决 MITM 的问题... 毕竟街机用的是没加密的 HTTP 80 🤗", + "views": 5, + "forwards": 0, + "images": [ + { + "width": 1280, + "height": 315, + "date": "2024-02-26T06:08:44", + "media_type": "photo", + "original_name": "photo_2024-02-26_06-08-44.jpg", + "url": "media/3406.jpg", + "size": 58722, + "thumb": "media/3406.jpg_thumb.jpg" + } + ] } ] \ No newline at end of file diff --git a/exports/hykilp/rss.xml b/exports/hykilp/rss.xml index e6dbadea9..eba0a983e 100644 --- a/exports/hykilp/rss.xml +++ b/exports/hykilp/rss.xml @@ -12,7 +12,16 @@ https://aza.moe/life zh-cn - Mon, 26 Feb 2024 04:10:48 +0000 + Mon, 26 Feb 2024 06:10:38 +0000 + + 小桂桂的回忆录 📒 #3406 + https://aza.moe/life?post=3406 + <p>今天把 <a href="##AquaNet">#AquaNet</a> 后端的请求验证写好啦!</p> +<p>因为官方的游戏客户端给用户提交数据的时候并没有做登录验证也没有做机器验证,所以在这之前只要暴露了你的卡号别人就可以随便发请求改你的数据。</p> +<p>今天做的请求验证实现方式是,机器 PowerOn 的时候验证 Keychip ID,给每个人的游戏返回一个独特的随机 URL 比如 <code>/gs/{token}/mai2/endpoint</code>,这样就可以不用担心熊孩子发的恶意请求追踪不到了!</p> +<p>(不过还需要想办法解决 MITM 的问题... 毕竟街机用的是没加密的 HTTP 80 <i class="custom-emoji" emoji-src="emoji/6170424195260877091.webm">🤗</i></p> + 3406 + 小桂桂的回忆录 📒 #3405 https://aza.moe/life?post=3405 @@ -94,7 +103,7 @@ Mom: we have 双层麦香鱼 at home! 小桂桂的回忆录 📒 #3393 https://aza.moe/life?post=3393 - <p>AquaNet 绑卡做好了!感觉写了两天终于写出了一个完美的解决方案 qwq</p> + <p><a href="##AquaNet">#AquaNet</a> 绑卡做好了!感觉写了两天终于写出了一个完美的解决方案 qwq</p> <ol> <li>绑卡的时候会把存档迁移到账号上</li> <li>如果账号上已经有存档了可以选择保留哪份存档</li> @@ -164,7 +173,7 @@ Mom: we have 双层麦香鱼 at home! 小桂桂的回忆录 📒 #3373 https://aza.moe/life?post=3373 - <p>今天把 AquaDX 的注册登录的流程写得差不多了</p> + <p>今天把 <a href="##AquaNet">#AquaNet</a> 的注册登录的流程写得差不多了</p> <p>加上了 CF Turnstile 用来防机器人,加上了 GeoLite 本地数据库自动判断用户的国家,写了登录之后的 JWT token 验证,注册域名配好邮箱之后写了一个「验证邮箱」的邮件模板。好累 <i class="custom-emoji" emoji-src="emoji/5445059765778521446.tgs">📦</i></p> <p>...结果注册一个帐号测试的时候验证邮件还被谷歌标记 spam 了,不知道怎样绕过。</p> <p>感觉写自己在意的项目和糊作业需要的精力完全不一样... 作业要写注册的话随便把用户丢进数据库里就结束了,但是做这个项目的时候每个 design decision 都犹豫了好久,比如需不需要用户名、注册的时候要让用户填用户名后设显示名还是填显示名后设用户名 url、用户名字符要不要限制成 url-safe、邮件验证要发验证码还是验证链接、要不要强制邮件验证等等等等...</p>