π μ κΈμκ°
μ΄μμ§ λ° μΌμ μκ°
μ΄μμ§μ μ κΈμ λν μκ°κ³Ό κ΅μ‘ λ°©ν₯μ λν΄ μ€λͺ νμλ€.
SWμμ§λμ΄λ‘ μ±μ₯ν μ μλ κΈ°λ°λ€μ§κΈ°κ° SWμ¬κ΄νκ΅ μ κΈμ λ°©ν₯μ΄μλ€.
μ₯λ³κ·μμ₯λμ λ§μμ λ€μΌλ©° λ€μνλ² λ§μμ λ€μ‘κ² λμλ€.
βΆοΈ νλ‘μ νΈ κ°μ
νλ‘μ νΈ λͺ©ν : μ νμν λ λ°°μ΄ κΈ°μ λ€μ ν λλ‘ λ―Έλ νλ‘μ νΈ μμ±νκΈ°
νλ‘μ νΈ μΌμ : 11μ1μΌ 17:00 ~ 11μ 4μΌ 12:00
νλ‘μ νΈ μ£Όμ : μμ μ£Όμ
μμ΄λμ΄λ₯Ό μ°Έκ³ ν μ¬μ΄νΈ (https://spartacodingclub.kr/community/exhibition)
νμ 쑰건
π΄π½ββοΈ νλ‘μ νΈ μ§ν
μ£Όμ μ μ
λ§μ§ μ§λλ μ£Όμ μ 보 곡μ λ± λ€μν μκ²¬μ΄ λμλ€.
κ·Έ μ€μμ μ κΈ 3κΈ°μλ€μκ² κ°μ₯ μ μ©ν κ²μ νμ μ리미λΌλ μκ²¬μ΄ λμ νμμλ¦¬λ―Έλ‘ μ νμλ€.
λ¬Έμ§ μΊ νΌμ€ νμ λ©λ΄μ λ©λ΄ 리뷰 곡μ νλ 'νμ μ리미' νλ‘μ νΈλ‘ μ νμλ€.
μμ΄μ΄ νλ μ μμ± λ° νΌλλ°±
νλ‘μ νΈμ κ³¨κ²©μΈ 'μμ΄μ΄ νλ μ'μ μμ±νκ³ νΌλλ°±μ λ°μλ€.
μμ΄μ΄ νλ μ
νλ‘μ νΈ κ³¨κ²©κ³Ό μΈλΆ κΈ°λ₯λ€μ μ μ΄λ³΄μλ€.
νΌλλ°±
μ²μ νμλ€κ³Ό μ΄μΌκΈ° ν λλ κΈμΌ μμ¬ ν λ¨κΈ΄ λ¦¬λ·°λ§ λ³Ό μ μκ² νλ €κ³ νμλ€.
νμ§λ§, κΈμΌ λ©λ΄μ λμΌν λ©λ΄λ₯Ό μμ¬ ν λ¨κΈ΄ λκΈλ€λ μ‘°ννλκ² μ’κ² λ€λ νΌλλ°±μ λ°μ λͺ¨λ¬ μ°½μ κΈ°λ₯μ μμ νκΈ°λ‘ νμλ€.
νμ 쑰건 λ΄μ©νμ΅
JWT λ°©μμ μ΄μ©ν λ‘κ·ΈμΈ κΈ°λ₯ ꡬν
JWTλ Jason Web Tokenμ μ€μλ§λ‘ ν ν°μ κΈ°λ°μΌλ‘ν μΈμ¦ λ°©μμ΄λ€.
κΈ°μ‘΄ μΈμ λ°©μκ³Ό λ€λ₯΄κ² μ¬μ©μμ μνλ₯Ό ν ν°μ μ μ₯νμ¬ API ꡬν μ ν ν° μ 보λ₯Ό μλ²μ μ λ¬νλ€.
μλ²μμ ν ν°μ μ ν¨μ±μ κ²μ¦ν ν μ ν¨ μ APIλ₯Ό ꡬννλ€.
λ§μ½ ν ν°μ΄ λ§λ£λκ±°λ μ ν¨νμ§ μμ κ²½μ° λ‘κ·ΈμΈ νμ΄μ§λ‘ λκΈ΄λ€.
ν ν°μ λ³΄ν΅ μΏ ν€μ μ μ₯νλ©° CSURF λΌμ΄λΈλ¬λ¦¬λ₯Ό μ΄μ©ν΄ CSRF 곡격μ λλΉνλ€.
μ λ΄μ© λ° μ΄λ―Έμ§λ μλ λΈλ‘κ·Έλ₯Ό κΈ°λ°μΌλ‘ μμ±νμμ΅λλ€.
CSR(Client Side Rendering)κ³Ό SSR(Server Side Rendering)μ μ°¨μ΄μ
μ λ΄μ©μ μλ λ λΈλ‘κ·Έλ₯Ό κΈ°λ°μΌλ‘ μμ±νμμ΅λλ€.
κΈ°λ₯ ꡬν
νμκ°μ λ° λ‘κ·ΈμΈ
νμκ°μ
νμκ°μ μ κ°μ μ 보μ λΉλ° λ²νΈλ₯Ό μλ²μ μ λ¬νμ¬ DBμ μ μ₯νλ€.
μ΄λ λΉλ°λ²νΈλ 보μμ λ¬Έμ λ‘ hashlib λ°©μμΌλ‘ μνΈν νμ¬ μ μ₯νλ€.
λ‘κ·ΈμΈ
λ‘κ·ΈμΈ μ html inputκ°μ μλ²μ μ λ¬νλ€.
μ λ¬ λ°μ inputκ°μ DBμμ κ²μνμ¬ κ²°κ³Όκ°μ΄ μμΌλ©΄ ν ν°μ λ΄λ €μ£Όκ³ μμΌλ©΄ λ‘κ·ΈμΈ νμ΄μ§λ‘ 리λ‘λ νλ€.
μνΈνλ₯Ό μν΄ hashlib ν¨μλ₯Ό μ΄μ©νλ©° jwt μΈμ¦λ°©μμ μν΄ pyjwt ν¨μλ₯Ό μ¬μ©νμλ€.(jwt ν¨μλ₯Ό μ¬μ©νλ©΄ μλ¬κ° λ°μνμλ€.)
κΈμΌ μλ¨ λ¦¬μ€νΈ μΉ μ€ν¬λν
μλ²μμ κΈμΌ λ μ§λ₯Ό λ°μ μλ λΉ¨κ° λΆλΆμ μ½μ νμ¬ κΈμΌ μλ¨νμ΄μ§λ₯Ό μ‘°ν νμλ€.(νμ΄μ¬ datetime ν¨μ νμ©)
https://www.kaist.ac.kr/kr/html/campus/053001.html?dvs_cd=icc&stt_dt=2021-11-12
μλ¨μ urlμ #tab_item_1 > table > tbody > tr > td:nth-child(1)μ textλ₯Ό μ€ν¬λ© νμ¬ μλ²μμ split ν 리μ€νΈλ‘ μ μ₯νμλ€.(νμ΄μ¬μ BeautifulSoup4 ν¨μλ₯Ό μ΄μ©)
DBμμ κΈμΌ μλ¨κ³Ό λμΌν λ©λ΄λ₯Ό μ°Ύμμ ν΄λΌμ΄μΈνΈμκ² μμ±νλ 리뷰μ λ³μ μ νκ· μ μ λ¬νμλ€. μ΄λ μλ²μ¬μ΄λ λ λλ§μ μ΄μ©νμλ€.
νμμ νμ΄μ¬ μ΄μ€ for λ¬Έμ μ¬μ©νμΌλ©° λ©λ΄ 3κ°μ΄μ κ°μμ§ countνμλ€.
리뷰 μμ± λ° DBμμ data λ°ν
βΉοΈΒ νλ‘μ νΈ μλ£ λ° λλμ
νλ‘μ νΈ μλ£
λλμ
νλ‘μ νΈ κΈ°ν
μ²μ μμ μ λ§μ κ²μ μ νμ§ μκ³ μμνμλ€. κ·Έλ¬λ€ 보λ μλ²μ ν΄λΌμ΄μΈνΈ μ¬μ΄μ λ³μ λͺ μ΄λ μ μ₯λ°©μμ΄ λ¬λΌ ν€λ§€λ κ²½μ°κ° λ§μλ€. λν, μ΄λ κΈ°λ₯μ μ΄λκΉμ§ ꡬνν΄μΌν μ§ μ νν μμ νλ€ λ³΄λ μκΎΈ ν΄μΌν μΌμ΄ κ°λΉλͺ»ν λ§νΌ λΆμ΄λ¬λ€. λͺ¨λ μΌμ΄ κΈ°νλλ‘ λμ§λ μμ§λ§ μ°μ μμμ κΈ°λ₯ꡬν flowμ λλ μλ‘ μ νν μ΄ν΄νκ³ μμνλκ²μ΄ μ’μκ² κ°λ€λ μκ°μ΄ λ€μλ€.
νμκ³Όμ μν΅
μλ‘ μΌνλ λ°©μλ λ€λ₯΄κ³ μκ°νλ λ°©μλ λ€λ₯΄λ€λ³΄λ μ ννκ² λ§μ μνλ©΄ μλ‘ λͺ»μμ λ€μ΄μ μΌμ΄ κΌ¬μ΄κ³€ νλ€. κ·Έλ¦¬κ³ λννμ§ μμΌλ©΄ μλλ°©μ μ 무 μ§νμν©λ μμκ° μμλ€. μλλ°©μ μ μ₯μμ μκ°νκ³ λ§νλ μ΅κ΄μ κΈΈλ¬μΌκ² λ€λ μκ°μ΄ λ€μλ€.
Git Hub
λλ Git Hubκ°μ μμ€ν μ΄ μλμ§ μ ν λͺ°λλ€. μ²μ λ΄€μλ λ§€μ° μ κΈ°νκ³ λ³΅μ‘ν΄μ μ¬μ©λ² μ΅νλλ° λ°λμ μ κ±Έλ¦°κ² κ°λ€. κ·Έλ°λ° Confilct λλ¬Έμ λ§λ€μλ μ½λκ° μ¦λ°νμ¬ μλ²½μ μ’μ νλ κΈ°μ΅μ΄ λλ€. SW μμ§λμ΄λΌλ©΄ νμμμ κ°μλ° λΉ¨λ¦¬ μ΅λν΄μΌκ² λ€λ μκ°μ΄ λ€μλ€.
μ 보μμ§
ꡬκΈλ§μ μ무리 μ΄μ¬ν ν΄λ μνλ μ λ³΄κ° μ λμ€μ§ μμλ€. κ²μ λ²μλ₯Ό μ’νμ λμκ² νμν μ λ³΄λ§ μ»λκ²μ΄ μ΄λ κ² νλ€μ€μ λͺ°λλ€. κ·Έλ¦¬κ³ κ΅¬κΈλ§ 보λ€λ μμ μ¬λμκ² λ¬Όμ΄λ³΄λκ² λ λΉ λ₯Όλκ° λ§λ€λ μ¬μ€λ μμλ€.
μ κΈμ μνλ μμΈ
μ΄λ² νλ‘μ νΈλ₯Ό μ§νν κ°μ₯ ν° λͺ©μ μ΄λΌκ³ μκ°νλ€. νμλ€κ³Ό νμ νκ³ λͺ°μ νμ¬ λ§κ°μκ°κΉμ§ νλ‘μ νΈλ₯Ό μμ±νλκ². μ λ§ μ€λλ§μ 무μΈκ°μ λͺ°μ νμ¬ μκ°μ 보λΈκ² κ°λ€. λ¨μ 5κ°μλμ λͺ°μ νμ¬ SWμμ§λμ΄κ° λ μ μλ κΈ°λ°μ λ€μ§κ³ μΆλ€.
λ μμλ³Ό μ¬νλ€