방학 중 4번의 만남이 있었고, 3번 참석하였다.

 

정보보안 프로젝트와 마찬가지로, 결과 보고서를 포함한 공모전 참가신청서를 작성 후 제출하였다.

 

여기에는 야구 사이트의 웹 개발만 포함된 것이 아니고, 내 분야의 웹 사이트 보안 문제를 최소화한 코드 작성 및 팀원의 텐서플로우를 활용한 플로우 그래프 구현도 포함하였다.

(※ 텐서플로우 란 ?  딥러닝을 일반인들도 사용하기 쉽도록 다양한 기능을 제공하는 라이브러리.

Python/C++을 지원하며 데이터 플로우 그래프를 통한 풍부한 표현력을 자랑한다. 계산 구조, 목표함수 등을 정의하면 자동으로 미분 계산을 처리한다. )

 

 

우리 팀에서 만든 웹의 특장점은 내 구단에게 최적화된 맞춤형 사이트를 제작했다는 점에 있다. 또한 일정 시간 간격으로  승부 예측을 통해 재미있는 야구 관람 문화를 마련하는 것도 염두에 두었다. 내가 만든 개인정보보호 동의서와 이용약관도 회원가입 시 적용되었다.

 

 

아래에 S/W 주요 기능 중 내가 구현한 부분만 따로 올려본다.

 

 

 

 

 

java로 쓰인 시큐어코딩 가이드를 방학 중에 완벽 숙지하는 것이 지난 목표였고, 개학을 맞은 지금,

'내 임의대로' ppt로 시큐어코딩 가이드를 모두 정리하였다.

 

 

내가 정리한 것을 순서대로 써 보자면,

(1) 시큐어코딩 가이드  - 보안 기능 -  

(2) 시큐어코딩 가이드  - 시간 및 상태 -

(3) 시큐어코딩 가이드  - 에러 처리 -

(4) 시큐어코딩 가이드  - 코드 오류 -

이다.

 

 

 

(1) 시큐어코딩 가이드  - 보안 기능 -  

인증, 접근제어, 기밀성, 암호화, 권한 관리 등에 대한 가이드가 요약되어있다.

주요 부분만 간추려 보았다.

 

 

 

 

(2) 시큐어코딩 가이드  - 시간 및 상태 -

데드락(dead lock), 자원 경쟁 조건, 세션 고착 등을 포함하고 있다.

 

※ 데드락(dead lock) 이란?

    교착 상태라고도 하며 한정된 자원을 여러 곳에서 사용하려고 할 때 발생할 수 있다.

 

 

 

 

(3) 시큐어코딩 가이드  - 에러 처리 -

오류 상황 대응 유형, 패스워드 요구 조건을 설명한다.

 

 

 

 

(4) 시큐어코딩 가이드  - 코드 오류 -

프로그램 코드 간소화를 설명한다.

 

 

한동안 바빠서 포스팅이 늦었다. 

웹 사이트를 개발하는 데에 목적이 있지만 html과 css, jsp의 기초를 선 수강한 나는 화면 제작 때 투입하기로 하고, 웹 보안에 대한 공부를 하기로 하였다. 


멘토님께서 스터디를 위해 건넨 자료는 Java 시큐어코딩 가이드이다. 행정안전부에서 배포된 2012년 판 자료로 우선 공부를 시작했다. 


우선, 첫번째 과제는 개인 정보보호 동의서 작성하기! 

두번째 과제는 시큐어코딩 가이드 내용 내 것으로 정리 후 발표하기! 



=============================================================================


개인 정보보호 동의서 작성

첫번째 과제는 KBO와 같은 스포츠 데이터를 활용한 사이트의 로그인 중 개인 정보 동의서를 참고할 수 있어서 수월히 넘어갔다. 


개인 정보 동의서 예시


이용약관 안내는 수정해야할 것들이 많아서 나중에 이야기해보도록 하겠다. 이용약관에서는 손해 배상과 관련된 모든 부분까지도 법적으로 명시해 놓아야 하므로 생각보다 내용이 길어졌다.



=============================================================================


시큐어코딩 가이드 내용 내 것으로 정리 후 발표

시큐어코딩 가이드는 java를 지난 학기에 배웠음에도 불구하고 보안 공격 용어 및 점검 방법 등의 까다로움 덕분에 공부하기가 쉽지 않았다. 차차 알아나가야 할 것들이 정말 많은 분야이다. 


제일 먼저 공부한 분야는 '입력데이터 검증 및 표현' 이다. 

간단한 sql 삽입을 통한 여러가지 공격법들의 분류에 대하여 공부하고, Xquery 삽입, 크로스 사이트 요청위조(CSRF), 디렉토리 경로 조작 등의 생길 수 있는 보안 상 문제들을 파악하였다. 또한 그것을 방지하기 위한 코딩법을 간략히 정리해서 발표했다.


시큐어코딩 발표본


간단한 점검 방법을 실제로 우리 웹 사이트에 실행해 보았고, 로그인이 안되는 것을 확인하였다! 


파일 업로드 등의 자칫 실수하기 쉬운 부분에서 whitelist를 적용하라는 가이드의 조언을 참조하였다. 



=============================================================================


발표 후, 개발자 조원들에게서 여러 질문이 쏟아졌었는데 내가 남에게 무엇인가를 확실하게 설명하려면 더욱 자세하고 정확히 공부할 필요가 있다는 생각이 들었다. 다음 시간은 지난 시간 Q&A와 함께 가이드를 더욱 상세히 파헤치고 오려고 한다.


시큐어코딩 가이드 과제는 내용이 방대하여 내 임의대로 3회에 걸쳐 나눴다. 방학이 끝나기 이전에 가이드를 완벽히 숙지할 수 있을 것이다. 


참, 우리 팀의 개발은 순조로이 진행중이다~~






아이디어에서 끌어낼 만한 확고한 장점이 없다는 것을 절실히 깨닫고, 우리는 팀원 대다수가 좋아하는 야구를 키워드로 요구사항 분석서를 작성하기 시작했다. 


▶ 프로젝트명 : 야구 승부 예측 및 야구人 통합 커뮤니티 웹 

▶ 추진 배경 : 야구를 좋아하는 팀원들이 모여 야구人들을 위한 통합 커뮤니티 웹 제작

▶ 주요 기능 : 승률 예측, 경기 일정 및 날씨 예보, 구단 별 유니폼 및 경기 티켓 직거래 운영 

▶ 주요 기술 : 일월별 기록 정보 

              → 승률 예측 데이터베이스 활용 




요구사항 분석서는 앞으로 우리가 개발할 것들을 차례로 나열하여 앞으로도 참조할 수 있도록 하였다. 


▶ 예시 




다음으로, 시각적인 프로토타입을 위하여 ppt로 대략적인 웹의 구상을 해 보았다. 


▶ 예시 (커뮤니티 페이지)



내가 생각한 아이디어를 구체화하려면 일단, 잘 설명할 수 있어야 한다. 

나조차도 모르는 아이디어를 구현하기란 불가능하다.


두번째 미팅에서는 우리가 만들기로 한 프로젝트를 구체화하는 단계를 가졌다. 일단 서로 개발 환경이 잘 구축되어 있는지 점검하고 한이음에서 받은 서버와 연결이 잘 되는지 확인했다. 


이번 시간에는 우리가 말로만 이야기 했던 개발자 매칭 시스템(웹)을 구현하기 위하여 어떤 페이지들이 구성되어야 하는지 요구사항 분석서를 작성하고, 대략적인 화면 구성 ppt를 만들어 보았다. 

이 작업을 한 후, 개념적 및 논리적 모델링을 거치고 나면 비로소 차근차근 우리가 원하던 구상을 개발해 나갈 수 있을 것이다. 또한, 중간에 수정해야할 부분이 생기면 초안과 비교해가며 문제점을 더욱 잘 짚어낼 수 있다. 



그런데, 우리가 구상한 아이디어를 구체화하는 과정에서 인공지능을 활용한 프로젝트로 나아가기에는 사용자의 C랭귀지만 매칭하는 등 소재가 적어 어려움에 부딪혔다. 더욱이 지식을 공유하는 것을 곧 경쟁력이라고 생각하는 요즈음 지식 거래로 수익성을 창출한다는 것이 구시대적인 발상이라는 결론에 이르렀다. 


우리는 결국 현재까지 나온 아이디어를 엎고, 팀원끼리만 모이는 세번째 미팅을 갖게 되었다. 


1년간의 장기간 프로젝트가 될 [정보보안 프로젝트]에 이은 두번째 프로젝트, 

[sw개발 프로젝트]의 첫 kick-off 미팅이 있었다. 


분야가 '보안'으로 확실히 정해져있었던 [정보보안 프로젝트]와는 달리 이번 프로젝트의 주제는 자유주제였다. 기업에서 가장 많이 활용되고 있는 개발 환경인 Spring Framework를 활용할 예정이다.

 

프로젝트에 관하여 멘토님의 짤막한 브리핑이 있었는데 그 때 하신 말씀 중에 이 말이 참 와닿았다. 

개발 실력도 중요하지만 의사소통 능력만큼 중요한 것은 없다. 커뮤니케이션이 안되면 어떤 것도 만들어낼 수 없다. 

생각해보면 지금까지 해 온 프로젝트에서도 느껴왔지만 팀원 간 소통이 잘될 때에 더욱 좋은 결과를 낼 수 있었다. 

범위를 확장해보면, 사회에서 수요자의 니즈를 정확히 파악하고 그에 맞는 디자인과 개발이 이루어졌을 때에 가장 큰 이익을 창출할 수 있는 것과 일맥상통할 것이다.


멘토님께서는 리눅스/오라클/자바 등의 Tool을 필수로 활용하기로 하되, 주제정하기는 우리에게 맡기셨다.

▶ 프로젝트명 : 개발자를 위한 스터디 매칭 시스템 (생산성 SW)

▶ 추진배경 및 필요성 : 지식in 코딩 커뮤니티의 결합 

▶ 주요 기능 : IBM Waston의 텍스트 인식 기능을 활용하여 키워드 분석 

              → 같은 키워드끼리 분류하여 질문자와 응답자 간 실시간 매칭 서비스 제공 


p.s. 여기서는 간략히 소개하고, 더욱 자세한 기능은 추후에 분석 및 설계 시 공개하겠다! 


평소 우리가 코딩 숙제를 할 때에 구글링도 하고, 필요한 정보를 찾기위해 여러 사이트를 옮겨다니는데 이 모든 것을 한꺼번에 하나의 사이트에서 지원해주면 좋을 것 같다는 생각에 나온 아이디어이다.또한 개발 언어는 여러 개이고, 개발자마다 각기 다른 개발 스타일을 가지고 있으므로 적절한 매칭 및 코딩 주석 달기 활성화를 통한 의사소통 향상을 노려보자는 취지도 있다. 

주제 정하기는 정말 쉽지 않았다. . . 그래도 인공지능을 활용한 프로젝트를 할 생각에 설렌다! 일단 개발환경부터 구축해놔야지~

+ Recent posts