2020년 3월 25일 보안정보 스크래핑

2020년 3월 25일 보안정보 스크래핑 3월 25일 보안정보 스크래핑 ==================================================================== + 주요 취약점 - 메일전송 프로토콜을 이용한 원격 명령어 실행 주의 권고 외 1건 1. 메일전송 프로토콜을 이용한 원격 명령어 실행 주의 권고 최근 OpenSMTPD* 취약점이 발견되는 등 메일전송 프로토콜에서 원격 명령어 실행이 가능하여 주의를 권고함 공격자는 취약점을 악용하여 피해를 발생시킬 수 있으므로, 해결방안을 참고하여 조치 필요 - https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=35302 2. Django 제품 SQL Injection 취약점 보안 업데이트 권고 최근 Django*에서 SQL Injection취약점(CVE-2020-9402)을 악용할 수 있는 개념증명코드(Proof of concept, PoC)가 인터넷상에 공개되어 사용자의 보안 업데이트 필요 - https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=35301 ==================================================================== + 취약점 - Apple Safari 취약점 1. Apple Safari 취약점 Apple Safari security bypass CVE-2020-3885 - https://exchange.xforce.ibmcloud.com/vulnerabilities/178339 Apple Safari security bypass CVE-2020-3887 - https://exchange.xforce.ibmcloud.com/vulnerabilities/178338 Apple Safari inform...

[Django] CRUD 만들기

[Django] CRUD 만들기

[Django] CRUD 만들기

* python 프로젝트 기본 setting 하는 법

1. Django Project 생성

2. migrate 를 해준다.

3. static 폴더와 templates 폴더를 만든다.

4. settings.py => static 폴더와 templates 폴더 설정

1.

프로젝트 생성 후 가장 먼저 migrate를 해줘야한다.

2.

프로젝트에 templates, static 폴더 만들기

3.

settings.py에 설정하기

- TEMPLATES 위에 넣기

1 2 #프로젝트의 templates 폴더의 절대 경로 얻어와서 tempDir = os.path.join(BASE_DIR, "templates" ) cs

- 맨 아래에 넣기

1 STATICFILES_DIRS = (os.path.join(BASE_DIR, "static" ),) cs

- Language, Time_zone 수정하기

1 2 3 LANGUAGE_CODE = 'ko' TIME_ZONE = 'Asia/Seoul' cs

*출력 결과

[super user만들기]

1.

2.

3.

4.

[CRUD 생성 setting 하기]

1.

- package 만드는 개념과 비슷하다.

- 패키지에서 마우스 우클릭 - Create application을 누른 뒤 이름을 member로 하여 생성한다.

2.

모델 설정

1 2 3 4 5 6 7 8 9 10 # 회원정보를 관리할 모델 설정 # Member 모델 정의 class Member(models.Model): # num 필드 설정 (자동 증가되는 primary key 값) num = AutoField(primary_key = True) # name 필드 설정 (최대 길이 : 30, null 허용하지 않음) name = CharField(max_length = 30 , null = False) #null을 허용하지 않겠다. # addr 필드 설정 (최대 길이 : 50, null 허용) addr = CharField(max_length = 50 , null = True) #null을 허용하겠다. cs

3.

admin.py

1 2 3 4 5 6 7 8 9 10 11 12 13 #-*- coding: utf-8 -*- from django.contrib import admin from member.models import Member # Register your models here. # 관리자 모드에서 관리할 모델정보 설정 class MemberAdmin(admin.ModelAdmin): # num, name, addr 필드를 볼 수 있도록 설정 list_display = ( 'num' , 'name' , 'addr' ) # 등록하기 admin.site.register(Member, MemberAdmin) cs

4.

member를 추가한 후 settings에 추가

1 2 3 4 5 6 7 8 9 10 11 # Application definition INSTALLED_APPS = [ 'django.contrib.admin' , 'django.contrib.auth' , 'django.contrib.contenttypes' , 'django.contrib.sessions' , 'django.contrib.messages' , 'django.contrib.staticfiles' , 'member' , # 만든 application 의 이름 설정 ] Colored by Color Scripter cs

5.

make migration-migrate 연속으로 해준다.

6.

views.py 만들기

1 2 3 4 5 6 7 #-*- coding: utf-8 -*- from django.shortcuts import render def index(request): # templates/index.html 을 읽어서 출력하도록 return render(request, 'index.html' ) Colored by Color Scripter cs

7.

url

1 2 3 4 5 6 7 from Step03_CRUD import views urlpatterns = [ url(r '^admin/' , admin.site.urls), url(r '^$' , views.index) ] Colored by Color Scripter cs

8.

templates에 index.html 생성하기

9.

member 어플리케이션에 urls 생성하기

10.

메인 urls에 요청 목록 추가하기

- member로 시작하는 요청은 member.urls로 넘겨주기

1 2 3 4 5 6 7 urlpatterns = [ url(r '^admin/' , admin.site.urls), url(r '^$' , views.index), # /member/ 하위 요청을 처리할 urls.py 설정 url(r '^member/' , include( 'member.urls' )), ] Colored by Color Scripter cs

11.

member urls에 패턴 추가하기

1 2 3 4 5 6 7 8 9 10 11 urlpatterns = [ url(r '^list/' , ), url(r '^insertform/' , ), url(r '^insert/' , ), url(r '^delete/' ,), url(r '^updateform/' , ), url(r '^update/' , ), ] cs

12.

member views에 추가하기

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 from django.shortcuts import render # Create your views here. def list(request): pass def insertform(request): pass def insert(request): pass def delete(request): pass def updateform(request): pass def update(request): pass Colored by Color Scripter cs

13.

views 에 def list 작성하기

- 직접 sql문을 작성할 필요가 없다는 것이 특징.

- Member 모델의 모든 데이터를 가지고 온다.

1 2 3 4 5 6 7 8 def list(request): # Member 모델의 모든 데이터를 가지고 온다. member_list = Member.objects.all().order_by('num') return render( request, 'member/list.html' , { 'member_list' :member_list}, ) Colored by Color Scripter cs

[insert]

1.

insertform.html 생성

2.

insertform 과 insert def 작성

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 def insertform(request): return render(request, 'member/insertform.html' ) def insert(request): # post 방식 전송되기 위해서는 form 안에 {% csrf_token %} 작성 # post방식 전송되는 파라미터추출해서 Member 모델 객체 생성 mem = Member( name = request.POST.get( "name" ), addr = request.POST.get( "addr" ), ) # DB에 반영 mem.save() # 리다일렉트 이동하라고 응답 return HttpResponseRedirect( '/member/list/' ) Colored by Color Scripter cs

3.

보안 관련 오류- Forbidden : CSrf 검증에 실패했습니다. 요청을 중단하였습니다. 오류

해결방법

- 아래와 같이 {% csrf_token %} 을 추가해준다.

[Delete]

1.

html에 delete버튼 생성하기

2.

views

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 def delete(request): # get 방식 전달되는 삭제할 번호 얻어오기 #num= request.GET.get("num") # 삭제하기 #mem=Member.objects.get(num=num) #mem.delete() # 위의 작업을 한줄로 표현하면 ... Member.objects.get(num = request.GET.get( "num" )).delete() #return HttpResponseRedirect("/member/list/") return render( request, 'member/alert.html' , { "msg" :u "삭제 했습니다." , "url" : "/member/list/" , }, ) Colored by Color Scripter cs

3.

alert.html생성하기

[Update]

1.

html 에 수정버튼 생성하기

2.

views

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 def updateform(request): # get 방식 전달된 수정할 회원의 번호를 이용해서 회원 정보를 얻어온다. member = Member.objects.get(num = request.GET.get( "num" )) # member 는 dict type 이다. return render( request, 'member/updateform.html' , { "member" :member} ) def update(request): member = Member( num = request.POST.get( "num" ), name = request.POST.get( "name" ), addr = request.POST.get( "addr" ), ) # .save() 메소드는 data 가 있으면 수정 반영, 없으면 insert member.save() return render( request, 'member/alert.html' , { "msg" :u "수정했습니다." , "url" : "/member/list/" }, ) Colored by Color Scripter cs

from http://heekim0719.tistory.com/160 by ccl(A) rewrite - 2020-03-06 22:20:40

댓글

이 블로그의 인기 게시물

엑스브레인(XBrain) 기업 정보

django 설치 방법

[aws] deploy Angular app with s3 | AWS S3로 angular 앱 배포하기