쿠키가 설정된 PHP를 사용하여 데이터베이스 기반 웹 사이트를 만들었으며 이제는 HTTP 스푸핑을 방지해야합니다. 어떻게해야할까요? 우리는 이것으로 초보자이기 때문에 도움이된다면 큰 도움이 될 것입니다.HTTP 스푸핑을 방지하는 방법은 무엇입니까?
답변
HTTP 요청을 "스푸핑 (spoof)"할 수 없습니다. 서버에 요청을 보내면 서버가 적절하게 응답합니다.
나는 당신이 쿠키 스푸핑을 막으려하고 있다고 생각합니다. 쿠키가 클라이언트 측에 저장되는 것을 고려하면 사용자가 자신의 콘텐츠를 수정하지 못하도록 할 수있는 방법이 없습니다.
쿠키에 중요한 정보를 저장하지 마십시오. 보안이 없으며 클라이언트가 쉽게 읽고 수정할 수 있습니다.
대신 PHP 세션을 사용하십시오. 세션이 작동하는 방법과 세션을 안전하게 유지하는 방법에 대한 전체 설명은 one of my previous answers에서 읽을 수 있습니다.
공격자가 도용하는 시간의 양을 줄이기 위해 요청의 새로운
session_id
마다 X 번호를 다시 생성 세션 고정
방지 :기본적으로 세션을 확보하는 것은 두 개의 전선에서 이루어집니다 이드.
는 고유의 클라이언트
사용에게 IP를 식별 및/또는 사용자 에이전트는 고유의 클라이언트를 식별하고 세션에 저장되어있는 것들에 대한 모든 페이지로드에 그 값을 확인합니다. 이것은 클라이언트를 고유하게 식별해야하는 유일한 두 가지 선택 사항입니다. 심지어 장소에서 그와
는, 해결책은 바보 - 증거 없다하고 session_id
가 손상되면, 당신은 거의 위해 수행됩니다.
자세한 내용은 my previous answer을 참조하십시오.
스푸핑은 무엇입니까? HTTP는 데이터를 전송하기위한 프로토콜 일 뿐이며, 실제로는 스푸핑 된 것이 아닙니다.
할 일은 정보의 스푸핑을 방지하는 것이지 클라이언트를 신뢰하지 않는 것입니다. 쿠키 측면에서 쿠키 데이터를 수락하기 전에 데이터베이스와 비교할 해시 된 의사 임의 값을 저장하십시오. 업데이트]
:
이 특별히 당신이 염려되는 쿠키는 것을 감안할 때, 나는 깊이있는 좀 더 갈 것입니다. 쿠키 저장시주의해야 할 두 가지 주요 사항이 있습니다.
- 은 그래서 당신이 개인 데이터를 저장하는 사용자와 사이트를 갖고 싶어 가정 해 봅시다 데이터베이스
에 대해 실제 데이터
모범 사례에 좀 더 읽기 : http://jaspan.com/improved_persistent_login_cookie_best_practice
당신이 man-in-the-middle 도청을 방지하려면 , 당신은 네트워크를 통해 보안 채널을 생성 HTTPS을 사용 할 수 있습니다 적절한 암호 스위트를 사용하고 있다는 것을 제공 서버 인증서는 verified and trusted입니다.
참고 : 원래의 질문은 모호했습니다. 이제는 쿠키 스푸핑에 관한 질문임을 분명히합니다.
스푸핑? 손상된 정체성의 유일한 진짜 문제는 쿠키 도용입니다.
당신이 할 수있는 일은 쿠키가 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 주소를 사람에 부정적인 영향을 미칠 수 있습니다.
에 * all *이면이 "조언"이 얼마나 유용한 지 잘 모르겠습니다. 이것은 유동 IP 주소를 가진 사람들뿐만 아니라 노트북과 같은 모바일 장치를 사용하는 사람들도 잡습니다. 한 사무실에서 다른 사무실로 이동하면 코드에서 쿠키를 식별 할 수 있습니다. 나는 이것을 추천하지 않는다. – T9b
나는 이것이 답변되었지만 내가 사용하는 또 다른 기술을 추가하고 싶습니다. 특히 관리 로그인에 유용합니다. 평소와 같이 세션을 사용하지만 믹스에 디렉토리 보호를 추가하십시오.
그런 식으로 세션이 도용 당하면 하이재커도 디렉토리 로그인을 가져올 수 있어야합니다.
이 기술을 포럼 관리에 사용합니다. 특정 포럼은 쉽게 해킹되어 해커가 들어 와서 심각한 문제를 일으킬 가능성을 줄입니다.
DC
- 1. GUI 차단을 방지하는 방법은 무엇입니까?
- 2. iframe로드 이벤트를 방지하는 방법은 무엇입니까?
- 3. 깨진 파이프를 방지하는 방법은 무엇입니까?
- 4. ListBox.SelectedIndexChanged 이벤트를 방지하는 방법은 무엇입니까?
- 5. DataGridView에서 정렬을 방지하는 방법은 무엇입니까?
- 6. ASP.NET 이벤트에 HTTP GET을 방지하는 방법은 무엇입니까? 또는 모든 이벤트에서 Request.Type을 확인하는 방법은 무엇입니까?
- 7. 홀수 스크롤바 플래시를 방지하는 방법은 무엇입니까?
- 8. PHP에서 보안 위험을 방지하는 방법은 무엇입니까?
- 9. 장고 테스트 서버에서 HTTP 304를 방지하는 방법
- 10. 컨트롤이 포커스를 훔치는 것을 방지하는 방법은 무엇입니까?
- 11. 특수 템플릿 인스턴스화를 방지하는 방법은 무엇입니까?
- 12. MEF로 중복 모듈을 방지하는 방법은 무엇입니까?
- 13. ASP.NET에서 브라우저 시간 제한을 방지하는 방법은 무엇입니까?
- 14. 특정 세포의 수정을 방지하는 방법은 무엇입니까?
- 15. ajax에서 원격 양식 게시를 방지하는 방법은 무엇입니까?
- 16. 플래시 게임에서 멀티 복싱을 방지하는 방법은 무엇입니까?
- 17. ADAM에서 중복 개체 생성을 방지하는 방법은 무엇입니까?
- 18. 응용 프로그램 시간 초과를 방지하는 방법은 무엇입니까?
- 19. 모델 바인더의 관계 검증을 방지하는 방법은 무엇입니까?
- 20. lxml prom 압축 요소를 방지하는 방법은 무엇입니까?
- 21. 코드에서 출력 캐시 배출을 방지하는 방법은 무엇입니까?
- 22. 네트워크 게임에서 위치 점프를 방지하는 방법은 무엇입니까?
- 23. 항목 작성자 파괴를 방지하는 방법은 무엇입니까?
- 24. MVC3에서 여러 게시물을 방지하는 방법은 무엇입니까?
- 25. SSIS에서 CAST 오류를 방지하는 방법은 무엇입니까?
- 26. 사용자 생성 오류를 방지하는 방법은 무엇입니까?
- 27. 로그인 요청의 홍수를 방지하는 간단한 방법은 무엇입니까?
- 28. 거기 안드로이드에서 확장 beeing에서보기를 방지하는 방법은 무엇입니까?
- 29. 정수 오버 플로우를 방지하는 방법은 무엇입니까?
- 30. 세션 하이재킹을 방지하는 좋은 방법은 무엇입니까?
URL이란 무엇입니까 ?? –
일단 보안 문제가 완료되면 – Jermain