2010-02-21 4 views
5

쿠키가 설정된 PHP를 사용하여 데이터베이스 기반 웹 사이트를 만들었으며 이제는 HTTP 스푸핑을 방지해야합니다. 어떻게해야할까요? 우리는 이것으로 초보자이기 때문에 도움이된다면 큰 도움이 될 것입니다.HTTP 스푸핑을 방지하는 방법은 무엇입니까?

+1

URL이란 무엇입니까 ?? –

+0

일단 보안 문제가 완료되면 – Jermain

답변

6

HTTP 요청을 "스푸핑 (spoof)"할 수 없습니다. 서버에 요청을 보내면 서버가 적절하게 응답합니다.

나는 당신이 쿠키 스푸핑을 막으려하고 있다고 생각합니다. 쿠키가 클라이언트 측에 저장되는 것을 고려하면 사용자가 자신의 콘텐츠를 수정하지 못하도록 할 수있는 방법이 없습니다.

쿠키에 중요한 정보를 저장하지 마십시오. 보안이 없으며 클라이언트가 쉽게 읽고 수정할 수 있습니다.

대신 PHP 세션을 사용하십시오. 세션이 작동하는 방법과 세션을 안전하게 유지하는 방법에 대한 전체 설명은 one of my previous answers에서 읽을 수 있습니다.

  • 공격자가 도용하는 시간의 양을 줄이기 위해 요청의 새로운 session_id마다 X 번호를 다시 생성 세션 고정
    방지 :

    기본적으로 세션을 확보하는 것은 두 개의 전선에서 이루어집니다 이드.

  • 는 고유의 클라이언트
    사용에게 IP를 식별 및/또는 사용자 에이전트는 고유의 클라이언트를 식별하고 세션에 저장되어있는 것들에 대한 모든 페이지로드에 그 값을 확인합니다. 이것은 클라이언트를 고유하게 식별해야하는 유일한 두 가지 선택 사항입니다. 심지어 장소에서 그와

는, 해결책은 바보 - 증거 없다하고 session_id가 손상되면, 당신은 거의 위해 수행됩니다.

자세한 내용은 my previous answer을 참조하십시오.

+0

좋습니다. 감사합니다. – Jermain

+0

@Jermain : 내 대답의 왼쪽에있는 체크 표시를 클릭하여 대답을 수락하십시오. –

+0

아직 등록되지 않았지만 한번 등록하게됩니다. – Jermain

2

스푸핑은 무엇입니까? HTTP는 데이터를 전송하기위한 프로토콜 일 뿐이며, 실제로는 스푸핑 된 것이 아닙니다.

할 일은 정보의 스푸핑을 방지하는 것이지 클라이언트를 신뢰하지 않는 것입니다. 쿠키 측면에서 쿠키 데이터를 수락하기 전에 데이터베이스와 비교할 해시 된 의사 임의 값을 저장하십시오. 업데이트]

:

이 특별히 당신이 염려되는 쿠키는 것을 감안할 때, 나는 깊이있는 좀 더 갈 것입니다. 쿠키 저장시주의해야 할 두 가지 주요 사항이 있습니다.

  1. 은 그래서 당신이 개인 데이터를 저장하는 사용자와 사이트를 갖고 싶어 가정 해 봅시다 데이터베이스

에 대해 실제 데이터

  • 유효성 검사를 보관하지 마십시오. 쿠키에서 사용자 이름 또는 사용자 ID와 사용자가 로그인 할 때 데이터베이스에 저장된 해시 보안 토큰을 저장할 수 있습니다. 보안 토큰은 알 수 없으며 로그인 할 때마다 변경됩니다. 모든 개인 정보는 데이터베이스에 저장되며 쿠키에는 저장되지 않습니다.

    모범 사례에 좀 더 읽기 : http://jaspan.com/improved_persistent_login_cookie_best_practice

  • +0

    HTTP 메시지를 스푸핑하려는 시도를 감지해야합니다. – Jermain

    +0

    아마 당신은 당신이 생각할 수있는 구체적인 예를 설명 할 수 있습니다. –

    +0

    누군가가 PHP가 세션을 관리하는 데 사용하는 쿠키를 발견하면 다른 컴퓨터에서 다른 사람을 막아 수동으로 쿠키를 동일한 값으로 설정하고 자신이 가장 할 수있는 것은 무엇입니까? – Jermain

    2

    당신이 man-in-the-middle 도청을 방지하려면 , 당신은 네트워크를 통해 보안 채널을 생성 HTTPS을 사용 할 수 있습니다 적절한 암호 스위트를 사용하고 있다는 것을 제공 서버 인증서는 verified and trusted입니다.

    참고 : 원래의 질문은 모호했습니다. 이제는 쿠키 스푸핑에 관한 질문임을 분명히합니다.

    +1

    질문은 실제로 말도 안되기 때문에이 대답은 그 해석에 대한 좋은 조언을 제공합니다. – deceze

    +0

    그래 잘 나는 초심자 였다는 것을 언급 했으므로이를 고려하여 어딘가에서 시작해야한다. – Jermain

    +0

    당신이 옳다. 따라서 나는 -1을 제거했다. –

    0

    스푸핑? 손상된 정체성의 유일한 진짜 문제는 쿠키 도용입니다.

    당신이 할 수있는 일은 쿠키가 HTTP 헤더를 통해 전송 될 때마다 발급 된 IP 주소와 비교하여이를 확인하는 것입니다. 예를 들어 :

    <?php 
    session_start(); 
    $rec = db_query('select count(*), ip from session where session_id = "' . session_id() . '"'); 
    
    list ($last_count, $last_ip) = $rec[0]; 
    
    if (! $last_count) { 
        # add it into the database 
        db_query('insert into session (session_id, ip) values (' . 
         '"' . session_id() . '", ' . 
         '"' . $_SERVER['REMOTE_ADDR'] . '"' . 
        ')'); 
    } else { 
        if ($last_ip != $_SERVER['REMOTE_ADDR']) { 
         print "user has stolen a cookie!"; 
        } 
    } 
    ?> 
    

    그러나 이것은 ISP 문제 그들에게 동적 IP 주소를 사람에 부정적인 영향을 미칠 수 있습니다.

    +0

    에 * all *이면이 "조언"이 얼마나 유용한 지 잘 모르겠습니다. 이것은 유동 IP 주소를 가진 사람들뿐만 아니라 노트북과 같은 모바일 장치를 사용하는 사람들도 잡습니다. 한 사무실에서 다른 사무실로 이동하면 코드에서 쿠키를 식별 할 수 있습니다. 나는 이것을 추천하지 않는다. – T9b

    0

    나는 이것이 답변되었지만 내가 사용하는 또 다른 기술을 추가하고 싶습니다. 특히 관리 로그인에 유용합니다. 평소와 같이 세션을 사용하지만 믹스에 디렉토리 보호를 추가하십시오.

    그런 식으로 세션이 도용 당하면 하이재커도 디렉토리 로그인을 가져올 수 있어야합니다.

    이 기술을 포럼 관리에 사용합니다. 특정 포럼은 쉽게 해킹되어 해커가 들어 와서 심각한 문제를 일으킬 가능성을 줄입니다.

    DC

    관련 문제