[SSAC 3기] - 4주차-(1)

SangHoon·2021년 8월 24일
2

SSAC 3기과정

목록 보기
9/22
post-thumbnail

🤖DJANGO4


저번주엔 장고 어드민의 crud를 했다면,
오늘은 회원가입 페이지 기능 구현!!! 잉치킄 잉치킄

  1. 회원가입 기능 구현
    ① member/urls.py 에서 아래와 같이 path 2개 추가

            from django.urls import path
            from. import views
    
            urlpatterns = [
                path('ok', views.hello),
                path('receive', views.rec),	  # 회원 가입시 redirect되는 페이지
                path('send', views.send)	  # 회원가입페이지
            ]

    ② member/views.py 에서 아래와 같이 send, rec 함수 작성

            def hello(req) : 
                return render(req, 'a.html')
    
            def send( req ) :
                 return render( req, 'b.html')
    
            def rec( req ) :
                return render ( req, 'd.html', { 'info_1' : req.POST.get('name'),
                                                 'info_2' : req.POST.get('id'),
                                                 'info_3' : req.POST.get('pw'),
                                                 'info_4' : req.POST.get('pwCheck')
                                                })	#post방식

    ③ member/templates/b.html 에 회원가입 페이지를 form 으로 작성
    ④ member/templates/d.html 에 회원가입시 redirect 되는 페이지를 작성
    ⑤ 서버 실행 후 브라우저에 공인IP:8000/dontgiveup/send 입력
    ⑥ 5번에서 input칸을 채운후 전송한 화면

    --> 부트스트랩은 내일,,,밤을 샜더니 제정신이 아님 (그럼 안이지 밖이냐)

  2. ORM

🦾GET, POST 차이


FORM을 다루면서 GET, POST는 빠질 수 없음!!!
가져오다, 우편물

  1. GET
    • 정보를 URL에 붙여서 전송하는 방식 (가져오는것)
    • 클라이언트에서 서버로 어떠한 리소스로 부터 정보를 요청하기 위해 사용되는 메서드입니다.
    • 서로 url을 공유할때 사용
    • url 주소가 보내고 나서 변경됨
      www.example-url.com/resources?name1=value1&name2=value2

  2. POST
    • 정보를 노출되지 않도록 몰래 전송하는 방식 (수행하는것
    • 리소스를 생성/업데이트하기 위해 버에 데이터를 보내는 사용되는 메서드
    • 회원가입 같이 보안이 필요로하는 곳에 쓰임
    • url 주소가 변경되지 않음
      www.example-url.com

🦿FORM 태그


폼은 입력된 데이터를 한번에 서버로 전송하고, 전송한 데이터는 웹서버가 처리하고, 해당 결과에 따라 웹페이지를 보여준다. 클렌징폼, 똥품

  1. <form>

    • 사용자로부터 입력을 받아 서버로 정보를 전송하는 방법중 하나
    • 입력양식 전체를 감싸는 태그
    • 속성(attribute)
      • action : 정보를 보낼 주소 url
      • method : 정보를 보낼 방법 (get, post)
  2. <input>

    • 타입(type)

      • text : 텍스트 입력란
      • password : 비밀번호 입력란 - *로 표시
      • radio : 라디오버튼 - 단일선택
      • checkbox : 체크박스버튼 - 다중선택
      • button : 버튼
      • submit : 서버에 데이터를 보내주는 전송버튼
      • hidden : 안보이게 해줌
    • 속성(attribute)

      • name : 서버로 전달되는 이름
      • value : 입력 태그의 초기값
  3. <select>

    • 드롭다운
    • 속성(attribute)
      • option 의 value
  4. <textarea>

    • 텍스트 여러줄을 입력할 수 있는 큰 text창
    • rows, cols 사용
  5. <label>

    • 이름표 - 제목같은 역할

-> 더궁금하면 500원 reference 참고

🐱‍🏍Token


토큰은 쉽게 말해 본인확인 수단으로서, 로그인시 유효성체크를 한 후 유효할시 토큰을 발행하여 권한을 부여하는것을 말한다. 맞겠지?.??

  1. CSRF 토큰 (Cross Site Request Forgery)
    • 장고의 템플릿 언어-로컬에서는 작동x
    • csrf의 공격을 막는 방어기법으로 임의의 난수를 생성하고 세션에 저장하고 요청떄마다 세션에저장된 토큰값과 전달된 토큰값이 같은지 검사한다
      { % CSRF_TOKEN % }

  2. CSRF공격
    • 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격


  3. JWT 토큰 (JSON Web Token)
    • 필요한 모든 정보와 검증을 위한 Signature 를 포함하는 JSON 객체를 통해 만들어내는 토큰의 일종 (키-값 쌍의구조)

    • Header, Payload, Signature 를 포함하고있다

    • 간편한 사용 및 인증절차를 가지고 있으며, REST API에 최적화된 키 인증방식

      { 
        "alg": "HS256", 
        "typ": "JWT"
       }



📌짚고 넢어가기


  1. DBMS 별 차이점?

    • DBMS별로 문법이 조금씩 다르긴 하나 거진 비슷하다.
      ex) SQL server : 수정시 ALTER 사용 / MY SQL : 수정시 MODIFY 사용
  2. 클라이언트가 서버로 정보를 전송하기 위한 방법

    • form (get / post) 태그를 활용하는 방법이 유일하다
      -> 새빨간 거짓말!!!!!
      -> 사실 나도 정확하게는 모르나 REST의 get, post 외에 PUT, DELETE를 말씀 하시는게 아닌가 어레짐작해본다 (다음시간에 질문해야지잉츠큭)
  3. CSRF vs XSS

    • CSRF
      - 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격
    • xss
      - 웹페이지에 악의적인 스크립트를 삽입하여 사용자가 페이지를 이용시 정보를 탈취해가는것

    포브스 선정 XSS, CSRF 최고의 비교한 블로그 참고!!!
    -> 정처기 공부할때 서술형으로 진짜 헷갈렸던 개념,,, 2020개정 이후 정처기를 취득 하신분들은 공감 하실것이다😭 + sql Injection도,,,

📚과제


🦈수업후기



"할머니를 이해 시킬정도로 설명하지 못하면 그건 제대로 아는것이 아니다" 라는 명언이 생각나게 하는 수업이 아니였나 싶다. 대표님 존경!!!(feat.사회생활)

CSRF토큰에 대해 배우면서 CSRF공격을 어떻게 막는지 알아보다 매커니즘까지 알게되어 뿌듯하였고, JWT도 그냥 쓰기만 했던 나를 되돌아보며 반성하게 되었다ㅠㅠ

또 한가지! 수업이 끝난 후 처음으로 자체적으로 온라인 줌을 통해 복습을 하시는 모습이 너무 훈훈했다. 핑계지만 전날밤 밤을 새는바람에 바로 고투배드했는데 다음번엔 꼭 참여할 수 있도록 해야겠다. (type ="diary")

profile
되는 이유만 생각하는 카멜레온

0개의 댓글