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...

[Python - Django] 팝빌 휴폐업조회 API 연동 가이드

[Python - Django] 팝빌 휴폐업조회 API 연동 가이드

안녕하세요. 고객의 가치를 연결하는 비즈니스 파트너 링크허브 입니다.

본 포스팅에서는 Python - Django Framework 개발환경에서 고객사들이 팝빌 휴폐업조회 API SDK를 쉽고 빠르게 이용할 수 있도록, 예시를 통하여 연동 설정 방법을 안내드리겠습니다. 신규 프로젝트 생성과 SDK 추가 후, "단건조회(CheckCorpNum) API"를 구현하는 순서로 진행하겠습니다.

팝빌 SDK는 Python V2.6 이상 모든 개발환경을 지원하며, 통신을 위한 별도 프로그램 설치가 필요하지 않습니다.

"팝빌은 링크허브에서 자체 개발하고 직접 운영하는 휴폐업조회 서비스 Brand Name 입니다."

다음 개발환경은 [ Python V2.7 | Django V1.11 ] 기준으로 작성되어 있어, 이용 중인 개발환경과 차이가 있을 수 있는 점 감안해 주시기 바랍니다.

1. 프로젝트 생성

Django 프로젝트를 자동으로 구성해주는 django-admin 스크립트를 통해 'Tutorial' 프로젝트를 생성 합니다.

$ django-admin startproject Tutorial

startproject 명령으로 Tutorial 프로젝트가 생성 되었습니다.

Tutorial / manage.py Tutorial / __init__.py setting.py urls.py wsgi.py

2. 휴폐업조회 SDK 추가

① SDK를 이용하기 위해서는 팝빌 상품 라이브러리 추가를 위한 Python 패키지 설치가 필요합니다.

$ pip install popbill

② Tutorial/settings.py 파일에 링크허브 인증정보인 링크아이디와 비밀키를 설정합니다.

# -*- coding: utf-8 -*- import os import sys imp.reload(sys) try: sys.setdefaultencoding('UTF8') except Exception as E: pass # 링크허브에서 발급받은 링크아이디, 비밀키 LinkID = "LINKID" SecretKey = "SwWxqU+0TExEXy/9TVjKPExI2VTUMMSLZtJf3Ed8q3I=" # 연동환경 설정값, 개발용(True), 상업용(False) IsTest = True ... .. INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'Taxinvoice', ]

▶ 링크허브에서 발급받은 고객사 인증정보로 링크아이디(LinkID)와 비밀키(SecretKey) 값을 변경하시기 바랍니다.

③ 휴폐업조회 앱(app) 만들기 - app을 생성하기 위해 manage.py 가 존재하는 디렉토리에서 다음의 명령을 입력합니다.

$ python manage.py startapp Closedown

startapp 명령으로 Closwdown 앱이 생성 되었습니다. Closedownl / __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py apps.py

④ view를 호출하기 위해 Closedown 디렉토리에서 urls.py라는 파일을 생성 합니다.

from django.conf.urls import url from . import views urlpatterns = [ ]

⑤ 최상위 URLconf(Tutorials/urls.py)에서 Closedown.urls 모듈을 바라보게 아래와 같이 수정합니다.

from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ url(r'^Closedown/', include('Closedown.urls')), url(r'^admin/', admin.site.urls), ]

3. API 구현 (View 작성하기)

① Closedown/view.py 파일에 팝빌 API 호출을 위한 휴폐업조회 서비스 객체를 생성 합니다.

from popbill import ClosedownService from Tutorial import settings # config/settings.py 작성한 LinkID, SecretKey를 이용해 ClosedownService 객체 생성 closedownService = ClosedownService(settings.LinkID, settings.SecretKey) # 연동환경 설정값, 개발용(True), 상업용(False) closedownService.IsTest = settings.IsTest

API 호출 시점에 인증서버로부터 발급받은 토큰을 이용해 사용자를 인증하며, 발급된 토큰은 30분의 유효시간 내에서 재사용이 가능합니다. 만약, 휴폐업조회 서비스 객체를 지역변수로 선언하거나 API 호출시 마다 모듈을 초기화 시키면 API를 호출할 때마다 토큰을 재발급 받는 과정을 거처야 하기 때문에 성능 저하 및 리소스 낭비의 요인이 될 수 있습니다.

② 휴폐업 단건조회를 확인하기 위해 Closedown/view.py 파일에 checkCorpNum API를 작성합니다.

CheckCorpNum API 열기

CheckCorpNum API 접기 from popbill import ClosedownService, PopbillException; def checkCorpNum(request): try: # 팝빌회원 사업자번호 CorpNum = "1234567890" # 확인하고자 하는 사업자번호 checkCorpNum = "6798700433" corpState = closedownService.checkCorpNum(CorpNum, checkCorpNum) return render(request, 'response.html', {'corpState': corpState}) except PopbillException as PE: return render(request, 'response.html', {'code': PE.code, 'message': PE.message}) CheckCorpNum API 접기

③ checkCorpNum view를 호출하기 위해 Closedown/urls.py 파일에 아래와 같이 수정합니다.

from django.conf.urls import url from . import views urlpatterns = [ url(r'^checkCorpNum$', views.checkCorpNum, name='checkCorpNum'),

]

④ checkCorpNum view 호출에 대한 code, message값을확인 하기 위해 templates/response.html 페이지를 작성합니다.

휴폐업조회 - 단건 {% if code %} code (에러코드) : {{ code }} message (에러메시지) : {{ message }} {% else %} corpNum (사업자번호) : {{ corpState.corpNum }} type (사업자 과세유형) : {{ corpState.type }} typeDate (과세유형 전환일자) : {{ corpState.typeDate }} state (휴폐업상태) : {{ corpState.state }} stateDate (휴폐업일자) : {{ corpState.stateDate }} checkDate (확인일자) : {{ corpState.checkDate }} {% endif %}

⑤ 휴폐업조회 처리결과를 응답 메시지를 통해 확인합니다.

[참고] "권한정보의 서명이 일치하지 않습니다." 오류메시지 해결방법 안내 - https://linkhub.tistory.com/98

⑥ 휴폐업조회 내역은 팝빌 개발용(test.popbill.com) 사이트에서 확인할 수 있습니다.

[참고] 팝빌 연동 개발을 위한 테스트베드(개발용) 안내 - https://linkhub.tistory.com/91

팝빌에서 제공하는 다양한 API는 동일한 컨셉으로 개발되어 있어, 하나의 서비스를 이용한 경험이 있으면 다른 서비스들도 유사한 방법으로 빠르게 연동이 가능하니 많은 이용 부탁드립니다.

지금까지 Python - Django Framework 개발환경에서 휴폐업조회 API를 연동하는 방법에 대해 안내해 드렸는데, 내용에 대한 추가적인 문의가 있으면 기술지원센터로 편하게 연락 주시기 바랍니다.

고객사의 편의를 위하여 이메일, 전화 등 다양한 채널을 열어놓고 있으니 언제든지 연락 주시기 바랍니다.

기술지원센터 / T. 1600-9854 / E. code@linkhub.co.kr

from http://linkhub.tistory.com/180 by ccl(S)

댓글

이 블로그의 인기 게시물

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

django 설치 방법

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