2012-07-26 3 views
0

첫 번째 질문은 보안 로그인 페이지를 제공하기 위해 취해야 할 표준 단계에 관한 것입니다. 내가 잘 알고있는 두 가지 사항은 https를 통해 데이터를 전송하는 것 외에도 어깨 너머로보고있는 사람을 보호하기 위해 비밀번호 필드를 두는 것입니다. 로그인 사이트를 완전하게 확보하기 위해 포함시켜야 할 다른 것들이 있습니까?보안 로그인 페이지 및 사용자 세션

또한 일단 로그인하면 세션이 유지되는 방식, 즉 사용자가 sth를 클릭 할 때 서버가 사용자 기반 콘텐츠를 다시 생성해야한다는 것을 알고 있습니까? whe가 로그인되었다는 것을 고려해 볼 때 여전히 https 및 기타 보안 조치를 유지해야합니까? 단지 세션 문제를 해결 답변

답변

1

사이트를보다 안전하게 만들기 위해 할 수있는 모든 일들이 있지만, 모든 작업을 수행하더라도 사이트가 "완전히"안전하다는 보장이 없습니다.

예를 들어 데이터베이스에 사용자 로그인 정보를 저장하는 경우 SQL 주입에 대한 보호를 설정 했습니까?로그인 페이지에도 등록 양식이 포함되어있는 경우 : XSS 공격으로부터 보호받을 수 있습니까? 암호가 충족시켜야하는 최소 요구 사항이 있습니까? 아니면 사용자가 자신의 암호를 추측 할 수 있습니까? 자신의 손에 맡길 수있는 몇 가지 문제가 있지만, 불행히도 실제로 착취 될 때까지 (아무도 생각하지 않았으므로) 보호하지 않을 생각이 항상 있습니다. 사이트에 대한 공격 경로는 무수히 많으며 공격자를 보호 할 수있는 동등한 방법이 있습니다. 모든 것을 탐구하기에는 너무 오래 걸릴 것입니다. (내가 보안에 익숙하지 않은 것은 아닙니다.)

다른 답변에서 지적한 것처럼 세션은 클라이언트 측의 쿠키에 저장된 세션 ID로 유지 관리됩니다. 세션이 시작되면 ID가 생성됩니다. 이 ID는 클라이언트의 브라우저에 의해 사용되어 서버 측에 저장된 데이터를 해당 브라우저에 속하는 것으로 식별합니다. 이 ID가 도난 당하지 않도록하려면 HTTPS를 사용하여 연결을 암호화해야합니다. 그러나 참고해야 할 점은 페이지의 외부 리소스 (예 : 다른 사이트의 이미지, 다른 사이트의 스크립트 등)에 대한 참조가있는 경우 연결은 부분적으로 (즉, , 외부 리소스가 아닌 파트). 명백한 이유 때문에 전체 암호화보다 안전하지 않습니다. 이를 방지하기 위해 가능할 때마다 모든 외부 리소스를 로컬 디렉토리에 다운로드합니다.

2

나는 하나 그것에 대해 책을 쓸 수 두려워 ...

에 대한

감사 : 세션은 일반적으로 각 연속적인 요청과 함께 전송되는 일부 쿠키에 의해 유지된다 . 그리고 사용자가 로그온했는지 여부에 대한 정보가 세션 쿠키 (또는 독립 실행 형 사용자 쿠키)를 기반으로하는 경우 훔친 쿠키를 사용하여 로그인을 가장 할 수 있습니다. 따라서 세션의 나머지 부분 (쿠키를 보호하기 위해)에 https 연결을 유지하거나 최소한 세션을 이전과 동일한 IP 주소에서 제공하는지 확인하는 등의 사소한 보안 예방 조치를 취해야합니다.

0

예, 비밀번호 입력란과 https는 로그인에 좋은 방법입니다. Captcha를 제외하고는 암호를 추측하려고하는 로봇 스크립트가 아닌지 확인하기 위해 지금 당장 할 일은 아무것도 없습니다. 세션 관리에 관한

: 거기에 '$ _SESSION'변수, 즉 모든 연결에 고유하고 호출 후 자동으로 PHP에 의해 관리됩니다입니다 '으로 session_start();' 스크립트 시작 부분.

이 명령은 매우 중요합니다. 그렇지 않으면 항상 $ _SESSION이 비어 있습니다. 내가 틀리지 않으면 브라우저에 식별 정보 (SessionID 또는 이와 비슷한 항목)를 요청한 다음 저장된 정보를 해당 SessionID.

다른 Superglobal과 마찬가지로이 세션 변수를 사용합니다.

$_SESSION['ID'] = $ID; 
$_SESSION['AccessRights'] = $AR; 

등등. 실제 세션 데이터는 서버 측에만 독점적으로 저장되며 PHP 스크립트 이외의 것으로 변경 될 수 없습니다. $ _SESSION에 사용자에 대해 알아야 할 모든 것을 저장하면된다.

'Keep up HTTPS'관련 : 모든 '중요한 데이터'가 이미 전송 되었기 때문에 필요하지는 않습니다.

민감한 개인 데이터 (예 : 비밀번호 변경 등)를 처리하고 나면 HTTPS로 다시 돌아가시기 바랍니다. 그러나 경험상 HTTPS의 실제 오버 헤드는 오늘날의 시스템에서는별로 중요하지 않으며 많은 트래픽을 예상하지 않는 한 결코 '켜기'상태를 유지하는 것은 바람직하지 않습니다.

이제이 문제와 관련하여 잘못된 의견이 제기 될 수 있지만 문제는 내 의견입니다.

0

@ 쿠바는 말하기를 - 그것은 거대한 주제입니다. 세션 고정, 쿠키 저장, 암호 보안, 유효하지 않은 로그인에 대한 응답 시간, 비보안 방식의 로그인 페이지 액세스, XSS, SQL 인젝션 및 아마도 수천 가지 중 더 많은 것들에 대해서는 잘 모릅니다.

내 충고 : 독자적으로하지 마세요. 가능한 모든 언어에 대해 많은 보안 프레임 워크가 있습니다. 하나를 선택하고 자신의 하우투 페이지를 읽고 그냥 사용하십시오. 그것은 가장 일반적인 작업으로 당신을 도울 것입니다. 로그인 페이지에는 응용 프로그램의 보안이 끝나지 않습니다. 전체 신청서를 안전하게 보관하여 안전하게 보관해야합니다.