자유게시판

제목 tank_auth를 사용하려고합니다.
글쓴이 jcoop 작성시각 2017/05/22 01:03:27
댓글 : 15 추천 : 0 스크랩 : 0 조회수 : 11908   RSS

email보내기를 코드이그나이터로 구현했습니다.

회원가입이후에, 사용자가 패스워드를 잊어버렸을때에, 보내주는 부분에 email을 보내는 것을 만들었습니다. 

그런데 회원가입할 때에, 메일이 정말인지 아닌지, 인증을 해야하는 부분이 있어야한다는 것이 생각이 나더군요.

 

사용자 인증부분을 보니까, tank_auth가 있더군요. 이것을 해야겠다. 이런 생각을 했습니다. tank_auth라이브러리를 다운받고 보니까, 코드이그나이터가 셋트로 되어있더군요. 테스트를 하기위해 따로 빼내어, 작업한 뒤, 필요한 부분을 덮어쓰거나, 테스트 한곳에 다시 전에 만든 코드를 덮어쓸 예정입니다. 아니구나. 중복되는 파일은 없네요. 그래도, 바로 덮어쓰기는건, 아닌 것 같고, 테스트한뒤, 덮어써야할 것 같네요.

이곳 사이트에 있었습니다. 코드이그나이터 포럼에서 검색해서 봤는데, 원글은 어디인지 생각이 나질 않네요.

https://konyukhov.com/soft/tank_auth/

 

늦었다. 이것보다, 늦었을 때가 빠르다. 이말이 생각나네요. 빨리, 얼른 해야지~.

 

태그 tank_auth,사용자인증,이메일
 다음글 코드이그나이터 한국사용자 포럼을 사용해보면서.. (7)
 이전글 MYSQL 5.7 JSON 지원 (1)

댓글

jcoop / 2017/05/22 03:07:29 / 추천 0
이것보다, 암호화를 걸어주는게 났겠군요. 사용자 이메일로 암호화를 걸어서, 사용자가 이메일 인증을 할때에, 메일안에, 링크값을 암호화건 주소로 넣은 뒤, 링크를 타고 들어오면, database에 저장한 값과 같으면, is_validate를 true로 해서, 인증된걸로 이렇게 만들면 될것같네요. 관련링크: http://codeigniter-kr.org/user_guide_2.1.0/libraries/encryption.html
변종원(웅파) / 2017/05/22 08:40:47 / 추천 0

로그인, 가입, 이메일 인증 등 직접 개발하기 힘들거나 귀찮다면(?) tank_auth 같은 라이브러리를 사용하는 것도 좋습니다.

말씀하신 부분은 이미 다 구현되어 있습니다.

kaido / 2017/05/22 10:01:57 / 추천 0

tank auth 좋습니다~

캡챠만 추가로 달면 왠만한 개발자가 혼자 로그인 시스템 만드는 것보다 범용적이고 사용하기 좋습니다.

다만 알수 없는 기준의 KISA 인증 받으실거면 커스텀이 필요합니다.

커스텀 하실려면 소스를 뜯어봐야 하는데, 이게 쪼금 복잡합니다. ㅎㅎ

직관성이 뛰어난 코드는 아니여도 tank auth 뜯어 보실 수준이 되면 CI는 다 배웠다고 해도 과언은 아닙니다.

jcoop / 2017/05/22 12:05:09 / 추천 0

댓글 감사합니다. tank auth소스를 열어보니, 다른 사람이 작성한거라, 분석하는 작업이 필요하네요. 안 해보던 작업이네요. 그래서 혼자 만들려고 했습니다.

검색해서 알아보니, md5를 사용하면 좋다. 이런 부분이 있네요.

$password = hash('sha512', md5($password));

이렇게 하려고 했습니다. 그러나 이것 뿐 아니라, form에서 유효성 검사에 javascript를 사용하면 좋지않다. 서버로 보낸뒤 검증을 하는게 좋다 이런 말도 있구요. tank auth는 form유효성검사도 다 작성이 되어있더라구요. 소스를 뜯어봐야하겠네요. 소스를 뜯어봤는데.. 코드이그나이터 유효성검사를 사용해야 좋은 것 같네요.

답변 감사합니다.

그런데, 질문이 하나 있습니다. form유효성검사는 javascript로 하면 보안상 안좋게 되는 건가요? 간단히 입력없음 검사는 모르지만, 새로 패스워드 입력할 때, 두개의 패스워드가 일치하는가. 이부분을 javascript를 사용하면 좋지 않나요? 서버로 가져와서 하는것이 좋나요?

 

kaido / 2017/05/22 12:11:00 / 추천 0

대 전제를 이렇게 생각 하세요.

js는 얼마든지 변조 가능하다!

if문을 걸어논게 지워질수 있다고 생각 하시면 됩니다.

if로 어떤 진행 방식이나 권한을 준다면, 그 것 자체를 무효화 해서 사용 가능하다. 라는 전제적 조건을 걸고 사용 하시면 맞습니다.

 

즉 js의 검증은 형식적인 검증이며, 단순히 submit 을 날리기 전에 간단히 체크만 한다 정도로 인식 하시면 됩니다.

 

js에서 한번 php에서 한번 두번 하는게 맞습니다 ^^

[다만 그 검증 해야 하는 자료값이 절대 위변조가 되면 안되는거면 2번이 맞고, 빈값이 있냐 없냐 이면서 빈값도 오케이 정도면 js에서 1번만 해도 되겠죠.]

 

tank auth 에도 CI 폼 검증을 사용 하고 있습니다.

jcoop / 2017/05/22 12:17:56 / 추천 0

@kaido

답변 감사합니다. tank auth를 사용한 회원양식사용보다, 실제 만든것이 간단하고 좋은 것 같다는 생각을 해봤습니다. 말씀하신대로, javascript를 사용한 유효성검사의 경우에 간단히 공백정도 체크하면 될것 같다는 생각이 들었구요.

if문이 지워진다는 것을 생각하면, js폼 체크를 없애는 것이 차라리 나을 것도 같네요. .js폼 체크 대신에 코드이그나이터 폼검증을 사용하면 될것 같다는 생각을 했습니다. captcha를 사용하면서요.

 

 서버로 보낸뒤, 패스워드의 경우, md5를 사용해서 저장하고, 사용자가 가입할 때에, 해당 이메일이 본인게 맞는지 확인하는 부분에서, md5로 링크를 걸어서 들어오게 하여, 들어왔으면, 해당 이메일이 사용가능하게 바꿔주는 형태로 한다면, 더 이상은 할게 없는 것 같이 생각됩니다.

tank auth보다 윗 문단에서 말한 대로 만드는 것이 더 간단할 것 같다는 생각을 했습니다. 혹시 로그인부분에서 더 할게 있다면 알려주시면, 감사하겠습니다. 

kaido / 2017/05/22 13:37:32 / 추천 0

@jcoop

js 체크폼 있는것이 나을 수도 있습니다.

 

이유는 여러가지 있는데, js 체크폼 안넣고 뒤로 발생 하는 사이드이펙트 를 처리 하는 것 보단 넣어두는게 차라리 편할 수 있기 때문입니다.

 

가령 이런거죠.

submit 으로 전송 했다 치죠. 검증에서 걸렸어요. 그럼 다시 이전 화면으로 가야 하는데...

일반적으로 이전 페이지로 돌리면 폼에 적힌 값이 유지가 안됩니다.

스크립트적으로 history -1 하는 수도 있긴 한데, 이걸로 유지 못 시키는 폼도 있거든요.

 

이래저래 고객이 불편합니다.

그런데 js로 한번 폼 검증을 해버리면, 폼을 유지 시키면서 페이지 전환 없이 유저가 곧장 실수를 찾아서 수정이 가능 합니다.

js 폼 검증은 보안 문제 보다는 사용자 편의성 때문에 해주는 거라 생각 하시면 됩니다.

하늘치 / 2017/05/22 13:53:14 / 추천 0

폼 데이터를 복원하는 set_value(), set_select(), set_radio() 등을 사용하시면,

js 없이도 폼에 입력했던 값이 유지가 됩니다. 

일일히 적용하는 게 좀 귀찮기는 하겠지만, 일단 만들어두면 요긴하긴 하죠..

 

 

jcoop / 2017/05/22 14:26:32 / 추천 0

모두들, 답변 감사합니다.

@하늘치 form에서, 전송후, 데이터가 남아있으려면, 

이것을 써야하나보네요. set_value()를 사용해 봤는데, 적용이 안되더군요. 

 $this->load->library('form_validation');

이것을 사용해서 그런가 봅니다. 아래 링크에, 저장하는 부분이 있네요. (배열을 이용한 검증 규칙 설정 Setting Rules Using an Array부분.)

http://www.ciboard.co.kr/user_guide/kr/libraries/form_validation.html#try-it

jcoop / 2017/05/22 14:32:28 / 추천 0

@하늘치 

다시보니 set_value()가 맞네요. 다시 시도해봐야겠네요~. 

jcoop / 2017/05/22 14:38:25 / 추천 0

@하늘치

데이터가 살아있게 하는 방법입니다. 암호가 틀리거나 폼유효성 검사통과 못했을 때에, 폼에 적힌 글들이 안 날아가게 하는 방법이네요.

<input type="email" name="user_email" class="form-control" value="<?php echo set_value('user_email');?>">

이렇게 쓰니까 되네요~. 감사합니다. 

변종원(웅파) / 2017/05/22 15:41:56 / 추천 0

무조건적인 cccv는 안 좋지만 이미 나와있는걸 따로 개발하는 것도 자원효용성 측면에서 보면 좋지 않습니다.

jcoop님이 매뉴얼을 한 2번 정도 더 읽어서 숙지하시면 읽을때마다 보물이 나올겁니다. ^^

jcoop / 2017/05/22 15:47:55 / 추천 0

@웅파

댓글 감사합니다.

/ 2017/05/23 15:51:43 / 추천 0
로그인 기능 저는 분석하기 귀찮고 복잡할거 같아서 만들었는데..;;
jcoop / 2017/05/23 16:36:31 / 추천 0

@닉

저도 그렇게, 혼자 만들었습니다. github으로 코드이그나이터 코드를 볼 정도면 괜찮겠지만.. 분석하기에는 내용도 그렇고, 어렵더군요. 혼자만드는게 간단하고 편한 것 같아요.