php 에서 로그인,로그아웃처리 ?

ljh0431의 이미지

php에서 홈페이지를 개발할 때 로그인, 로그아웃은 어떤 기법을 사용하나요 ?
일반적으로 어떤방식을 취하나요 ?
아시는 분 답변 주시면 감사하겠습니다.

neogeo의 이미지

일반적인 웹 사이트 개발과 같은 로그인 로그아웃 방식을 쓰겠지요.

대게 session 이나 cookie 로 사용하는 것으로 알 고 있습니다.

phpschool 에 가면 예제는 매우 많을 것 입니다.

Neogeo - Future is Now.

crane76의 이미지

일반적으로 세션을 사용하지 않을까요??

bear의 이미지

일반적으로 세션을 많이 사용합니다.

간혹 보면 자동 로그인 이라고 체크 하는 곳이 있는 웹사이트가 있는 곳이 있습니다.

그런곳은 쿠키를 사용하여 자동로그인을 하도록 합니다.

이런 방법도 괜찮을것 같더군요...

메인 페이지에서 아이피를 체크해서 자동 로그인을 해주는 경우도 있습니다.

그러나, 문제는 여러명이 사용하는 컴퓨터의 경우 아주 위험하죠..^^

그래서 보통 세션을 활용하여 처리 하는거 같습니다.

이곳도 자동 로그인이 가능합니다.

아이피 체크인지 아니면 쿠키 체크인지는 확인을 안해봤지만..^^;;;;

그러나, 보통 세션을 활용해서 세션을 체크 해가면서 하는 경우가 많습니다.

다수의 사용자가 있는 웹사이트 같은경우 디스크의 용량을 잘 마추셔야 합니다..^^

디스크의 용량이 풀이 나서 세션을 생성을 못하는 경우가 있더군요..^^;;;

/tmp의 용량을 알아서 잘 마추셔야 합니다..^^

세션이 보안에도 좋고 가장 많이 사용하는 방법입니다..^^

하나의 아이디에 다중 사용자를 방지 하는 방법으로는 세션의 정보를 데이터 베이스에 넣는 방법을 많이 사용하는 것 같습니다.^^

그럼, 도움이 되셨기를..^^

whatisid의 이미지

저는 cookie를 사용합니다.

타 사이트와 로그인 연동작업이 많은데, 이런 경우 session은

로그인 공유가 쉽지 않습니다. 그리고 웹서버가 여러대가 되면

session으로는 처리할 수 없지 않나요?

fliers의 이미지

단일 사이트 같으면 그냥 세션 쓰기도 하는데,
다른 목적에 의해서는 쿠키를 사용하기도 합니다.

이때는 좀 주의해야하는데
초보분들이 짜는 것들 보면, 보통 쿠키에 id 하나 달랑 넣어주거나 pw까지 쿠키에 넣어버리는 경우가 많은데 상당히 위험한 방식입니다.
바로해킹들어갑니다.

단순히 userid 란 쿠키변수에 id값이 들어있다고 해서 인증된 사용자라고 보면 위험하고,
pw까지 있는경우는 cookie 유출로 인한 위험성이 있죠.

근데 ,가끔 돌아다니는 사이트들 보면 저런 오류를 범한 곳이 상당수 있습니다 -_-

조금 커지는 규모면 db로 세션을 관리하기도 하죠.

kall의 이미지

whatisid wrote:

웹서버가 여러대가 되면

session으로는 처리할 수 없지 않나요?

세션이 저장되는 디렉토리를 NFS로 공유하면 되지 않을까요?

저도 구현해 보진 않아서 정말 될지는 모르겠군요...

웹서버 여러대를 써본적이 없어서..;;

----
자신을 이길 수 있는자는
무슨짓이든 할수있다..
즉..무서운 넘이란 말이지 ^-_-^
나? 아직 멀었지 ㅠㅠ

whatisid의 이미지

Quote:

이때는 좀 주의해야하는데
초보분들이 짜는 것들 보면, 보통 쿠키에 id 하나 달랑 넣어주거나 pw까지 쿠키에 넣어버리는 경우가 많은데 상당히 위험한 방식입니다.
바로해킹들어갑니다.

단순히 userid 란 쿠키변수에 id값이 들어있다고 해서 인증된 사용자라고 보면 위험하고,
pw까지 있는경우는 cookie 유출로 인한 위험성이 있죠.

근데 ,가끔 돌아다니는 사이트들 보면 저런 오류를 범한 곳이 상당수 있습니다 -_-

조금 커지는 규모면 db로 세션을 관리하기도 하죠.

DB세션이 여러대의 웹서버와 보안쪽을 모두 해결하는 방안이긴 합니다만,

DB사용이 워낙 비싼 자원이기 때문에 DB로 세션을 관리하는건 또 부담이

되죠.

쿠키로 인증을 하긴 하되, 그 쿠키값을 암호화해서 처리하는게 가장 좋은

방법이 아닐까 합니다.

kinuz의 이미지

저도 요즘 로그인,로그아웃 때문에 골머리중인데..-_-;
쿠키를 사용하는 사이트와 세션을 사용하는 사이트를 통합하느라..-_-;

요즘엔 거의 세션을 사용하는 것 같습니다.
보안적인 측면도 있고...

Quote:
저는 cookie를 사용합니다.

타 사이트와 로그인 연동작업이 많은데, 이런 경우 session은

로그인 공유가 쉽지 않습니다. 그리고 웹서버가 여러대가 되면

session으로는 처리할 수 없지 않나요

라고 하셨는데 웹서버 열러대라도 session으로 처리 가능하지 않을까요?
물론 세션 하나만 사용하지 않고 쿠키도 같이 사용해야 겠지만요..

Quote:
아이피 체크인지 아니면 쿠키 체크인지는 확인을 안해봤지만..^^;;;;

그러나, 보통 세션을 활용해서 세션을 체크 해가면서 하는 경우가 많습니다.

다수의 사용자가 있는 웹사이트 같은경우 디스크의 용량을 잘 마추셔야 합니다..^^

디스크의 용량이 풀이 나서 세션을 생성을 못하는 경우가 있더군요..^^;;;

/tmp의 용량을 알아서 잘 마추셔야 합니다..^^

세션이 보안에도 좋고 가장 많이 사용하는 방법입니다..^^

하나의 아이디에 다중 사용자를 방지 하는 방법으로는 세션의 정보를 데이터 베이스에 넣는 방법을 많이 사용하는 것 같습니다.^^


전 DB에 세션 아이디를 넣어서 사용했엇습니다.
로그인시 세션 아이디 발급후 DB에 세션 아이디를 넣고 로그아웃을 하면 해당 세션 파일과 DB에서 세션 아이디를 지움으로서 디스크 용량 문제를 해결하고
만약 그냥 창을 닫을 경우엔 DB에 있는 세션 ID를 가져와 세션을 시작 하게 햇었는데..

저 나름대로 여름에 세션 공부하면서 무쟈게 머리를 굴린...-_-;

반하는 건 10초면 되고.좋아하는 건 10분이면 되고.사랑하는 건 1시간이면 되지.
하지만 사랑하는 사람을 잊는 건 평생이 걸린데.-진주목걸이중에서-

zelon의 이미지

neogeo wrote:
일반적인 웹 사이트 개발과 같은 로그인 로그아웃 방식을 쓰겠지요.

대게 session 이나 cookie 로 사용하는 것으로 알 고 있습니다.

phpschool 에 가면 예제는 매우 많을 것 입니다.

저도 주제와 같은 경우를 공부하고 싶고, 인용한 글처럼 phpschool 에도 가봤습니다만... 위의 분들과 같이 따로 공부하지 않으면 힘들 정도군요. 뭔가 안개속을 걷는 다랄까... phpschool 은 자료가 너무 많고... 솔직히 세션 정복!! 이런 글 읽어봐도 php 이제 막 왕성히 써보기 시작하는 저로써는 복잡한 말뿐이더군요.

이 주제 떴는김에... 가장 간단하고(db 안 쓰고) 그나마 안전한 로그인/로그아웃 소스 가지신 분 계시나요? :D 거기서 좀 더 공부하고 안전하게 만들려면야 물론 자기가 해야겠죠. 부탁드립니다~

-----------------------------------------------------------------------
GPL 오픈소스 윈도우용 이미지 뷰어 ZViewer - http://zviewer.wimy.com
블로그 : http://blog.wimy.com

progcom의 이미지

처음에 세션에 대한 개념을 잡기가 쉽지 않아서 그런 경우가 많습니다.
서버에 개인창고를 만들고, 쿠키로 열쇠를 준다..고 생각하면 쉬울려나요.

세션키를 쿠키를 이용해서 발급하고, 같은 키에 해당하는 정보를 서버에서 읽어오는것 뿐입니다.
(조작해서 다른 유저의 세션키를 사용한다면, 별도의 보안장치가 없을 경우 그대로 그 다른 유저의 권한을 얻을수도 있습니다 -__)

안전한 로그인/로그아웃 소스를 구하시기보다는,
스스로 간단한 로그인/로그아웃을 구현해보시는게 이해하시기 좋을거라는 생각이 드네요.
위에서 나온 많은 방법들을 직접 하나하나 구현해보시면 좋은 결과가 있을지도 모릅니다. (보안은 전혀 생각하지 않는 방법부터 시작해서, 문제가 되는 부분을 하나하나 해결하다보면 안전한 소스를 작성할 수 있게 됩니다)

간단하게, ID와 패스워드를 비교해서 로그인되었음-을 지정하는 변수 하나만 설정하는 방법에서 시작해서, 이 경우에 생기는 문제, 다른 방법에서 생기는 문제 등을 지속적으로 고려해봐야합니다.
(완벽한 보안은 없다...고 생각하시는 편이 좋습니다)

암호화를 한다고 해도 쿠키에 암호 자체를 전송하는건 문제가 있습니다. 결국 서버에서 비교하기 때문에 패스워드를 그대로 노출하는것과 같은 행위입니다.
(똑같은 암호화 문자열을 전송하면 서버에서 비교할때는 같다고 인식하겠지요)

kirrie의 이미지

progcom wrote:
안전한 로그인/로그아웃 소스를 구하시기보다는,
스스로 간단한 로그인/로그아웃을 구현해보시는게 이해하시기 좋을거라는 생각이 드네요.
위에서 나온 많은 방법들을 직접 하나하나 구현해보시면 좋은 결과가 있을지도 모릅니다. (보안은 전혀 생각하지 않는 방법부터 시작해서, 문제가 되는 부분을 하나하나 해결하다보면 안전한 소스를 작성할 수 있게 됩니다)

간단하게, ID와 패스워드를 비교해서 로그인되었음-을 지정하는 변수 하나만 설정하는 방법에서 시작해서, 이 경우에 생기는 문제, 다른 방법에서 생기는 문제 등을 지속적으로 고려해봐야합니다.
(완벽한 보안은 없다...고 생각하시는 편이 좋습니다)

사무실에 php책이 굴러다니길래 한 한두주일 출퇴근하면서 읽어봤습니다. 게시판을 하나 만드는 중인데, 제 사부가 그러더군요. 절대 남 소스 참조하지 말라구요. 어느 정도 실력이 쌓였을때 남의 소스를 보면 깨닫는 바가 있지만, 아무것도 모르는 상태에서 남의 소스를 보면 배끼는 것 밖에 안된다나요.
전 요즘 progcom님의 말씀처럼 가장 간단한 기법(php개괄서 두어번 훑어보면 생각해 볼 수 있을 정도의 간단한 로직)부터 하나하나 해보고 있습니다. 그걸 중간중간 사부가 들어와 해킹(?) 하지요.
예를 들어, 게시판의 제목이나 아이디, 내용에 태그를 허용하지 말아야 한다는 (선택적으로 허용하던지) 걸 미쳐 깨닫지 못한 상태에서 만든 것에 사부가 온통 얼룩덜룩한 레이어로 떡칠을 해놓습니다. 그럼 전 '아, 태그를 허용하면 안되는구나.' 하면서 (귀찮으니까) 그냥 strip_tags 함수를 써버립니다. 그럼 선배는 '흠, 고치긴 고쳤군. 근데 그거보다 글을 파싱해서.. 어쩌구..' 하는 식으로 약간씩만 코멘트 해주고..
첨엔 세세히 가르쳐 주지 않는 사부가 밉더니(?), 요즘은 고맙습니다. 이렇게 하나씩 하나씩 알아가는 즐거움을 알았으니까요.

암튼 이야기가 좀 빗나갔는데, progcom님의 생각에 한표 던지고 갑니다~

--->
데비안 & 우분투로 대동단결!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.