파이썬으로 코딩 기초를 배우고 플라스크로 웹서비스 개발을 배우는 과정을 다루고 있습니다.
- 입문용 자료입니다.
ABCD : http://www.abcds.kr/
Facebook Group : https://www.facebook.com/groups/562787713823026/
한성일 : https://www.facebook.com/jamie.han.16
iheart79@gmail.com
W3C HTML5 컨퍼런스 2020 - 웹 환경에서 블록체인 노드와 통신 및 신원인증 (DID)Benjamin Oh
W3C HTML5 컨퍼런스 2020에 대한 정보는 다음에서 확인 가능합니다.
- https://www.openbooth.space/exhibition/html5
SSI Meetup Korea에서 번역 활동 참여 경험 및 DID 관련 프로젝트 진행에 대한 경험을 살려 W3C HTML5 컨퍼런스에서 블록체인 상의 DID 구현에 대한 발표를 하였습니다.
[IGC 2017] AWS 김필중 솔루션 아키텍트 - AWS 를 활용한 모바일 백엔드 개발강 민우
모바일 게임에는 사용자 인증, 컨텐츠 제공, 데이터 저장 및 분석은 물론 모네타이제이션을 위한 다양한 기능들의 개발이 요구됩니다. 이를 위해 AWS 를 활용하여 필요한 백엔드를 간단하지만 유저가 많아져도 항상 예측 가능한 성능으로, 또 사용한 만큼만 비용이 발생하는 형태로 구현할 수 있는 방법을 소개합니다.
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
CloudBread
클라우드 기반 무료 오픈소스 프로젝트로, 모바일 게임과 모바일 앱에 최적화된 게임 서버 엔진입니다. 모든 서비스는 마이크로소프트의 클라우드 서비스인 Azure에 최적화되어 동작하며, 안정성과 확장성을 목표로 개발 중입니다.
기능
•PaaS / DaaS 서버 엔진•PaaS, DaaS 로 손쉬운 개발 및 서비스 즉시 배포
•Real Auto Scale - PaaS
•개발/테스트/배포 = 통합 환경
•서비스 규모에 따른 앱 변경 없음
글로벌 론칭 아키텍처
•글로벌 론칭+데이터 동기화
•설계 부터 클라우드에 최적화된 아키텍처 및 프레임워크로 개발
•오픈소스 프레임워크 활용 개발
보안, 관리, 기술교육
•저장/통신에 표준 암호화 기술 적용
•기본 관리자 서비스 및 커스터마이징
•분석/관리 배치 작업 추가 제작 가능
개발자 그룹
•페이스북 사용자 그룹 : https://www.facebook.com/groups/cloudBreadProject/
지원되는 모바일 & 클라이언트환경
•iOS, Android, Windows Phone, Windows 스토어앱, Xamarin, PhoneGap, Sencha 등
•Microsoft Azure Mobile Service가 지원하는 모바일 및 다양한 클라이언트 플랫폼 지원 : http://azure.microsoft.com/ko-kr/documentation/services/mobile-services/
설치
•Wiki의 튜토리얼 설치 참조
프로젝트 설명
•모바일게임과 모바일 앱에서 사용되는 사용자의 패턴과 액션을 기록해 기능들을 제공
•클라이언트 모바일 디바이스는 게임서버로 JSON 방식의 데이터를 요청하고 서버가 해당 데이터를 처리 후 응답
•약 100여개의 비즈니스 로직이 기본제공(Wiki 참조)
•클라이언트는 마이크로소프트가 오픈소스로 직접 만들어 제공하는 라이브러리를 통해 서버로 API를 호출
실행 예제와 API 리스트는 Wiki 참조
Contribute/질문/토론
•페이스북 사용자 그룹 : https://www.facebook.com/groups/cloudBreadProject/
2. 로그인이란?
Logging in or signing in or on is the process by which
individual access to computer system is controlled by
identifying and authenticating the user through the
credentials presented by the user.
Wikipedia
4. 로그인 구현 이렇게??
• “아이디는 사용자를 구분하는 누구나 알 수 있는 문자열.”
• “비밀번호는 안보이게 자주 쓰이는 MD5 암호화해서 보내자.”
• “DB에 저장된 아이디와 암호화된 비밀번호를 비교하면 되겠지.”
• “HTTP POST 방식은 비밀스럽게 통신하는 방식이야.”
• “로그인을 하고나면 로그아웃하기 전까지 로그인한 것으로 간주.”
5. 로그인 구현 이렇게??
• “아이디는 사용자를 구분하는 누구나 알 수 있는 문자열.”
• “비밀번호는 안보이게 자주 쓰이는 MD5 암호화해서 보내자.”
• “DB에 저장된 아이디와 암호화된 비밀번호를 비교하면 되겠지.”
• “HTTP POST 방식은 비밀스럽게 통신하는 방식이야.”
• “로그인을 하고나면 로그아웃하기 전까지 로그인한 것으로 간주.”
6. 안전한 로그인 구현 조건
• 비밀번호를 포함한 개인정보는 전송 시 모두 암호화해야 한다.
• 또한, HTTP 보다는 HTTPS(SSL)를 이용해서 통신한다.
• HTTP POST는 GET과 비교해 파라미터들이 위치하는 곳이 다를 뿐 보안
과는 무관하다. (패킷스니핑)
• MD5, SHA-1, SHA-256, SHA-512 등의 해싱은 무결성 인증을 위해 사용
하는 것이지 암호화 알고리즘이 아니다. (MD5, SHA-1은 무력화되었다.)
• 로그인 성공은 사용자 “인증”을 완료했다는 것이며, 해당하는 “접근 권한”
을 부여한다는 것이다. 그러나 이 상태(세션)는 적절한 시기에 만료시켜야
한다.
7. 안전한 로그인 구현 예제
• REST API 지향
• RSA 암호화를 통해 개인정보를 암호화
• secure한 cookie를 이용해 RSA 개인키 보관
• token과 REDIS를 이용한 session 관리
8. Flask, Redis, Retrofit
• Python Flask: Django와 더불어 많이 사용되고 있는 Python
웹 프레임워크. Django는 Full-Stack 프레임워크인 반면에
Flask는 필요한 기능만 제공하는 Micro 프레임워크이다.
• Redis: REmote DIctionary System의 약자로 메모리 기반의
Key/Value 자료구조 서버이다.
• Retrofit: Square Inc.에서 개발한 Java용 네트워크 라이브러
리. Android 개발에서는 Volley 이후로 많이 쓰이고 있다.
22. 안전한 로그인 구현 예제
지금까지 설명한 예제 소스코드를 다음에 공개했습니다.
https://gitlab.com/ewhappcenter/safety-login.git
23. 안전한 로그인 구현 예제
• 이 예제는 “예시”로서 간단한 구현체이다. 따라서 다음과 같은 문
제가 있으며, 실서비스에서 사용하는 것을 권장하지 않는다.
1. RSA 암호화를 해서 전송하더라도 중간자 공격에 취약하다.
(SSL 연결 필요)
2. 전체 내용 자체를 RSA 암호화 하는 것만으로는 빠른 성능을
보장할 수 없다. (내용을 AES 암호화하고 AES 키를 RSA
암호화하는 방법을 추천)