2010-02-21 26 views
5

Chúng tôi đã tạo một trang web dựa trên cơ sở dữ liệu bằng PHP với các cookie đã đặt và giờ đây cần phải ngăn chặn giả mạo HTTP, bất kỳ ý tưởng nào về cách thực hiện điều này? chúng tôi là những người mới bắt đầu với điều này nên mọi trợ giúp sẽ tuyệt vờiLàm cách nào để ngăn chặn HTTP Spoofing?

+1

URL là gì ?? –

+0

đang được tải lên khi chúng tôi đã hoàn tất các vấn đề bảo mật – Jermain

Trả lời

6

Bạn không thể "giả mạo" các yêu cầu HTTP. Bạn gửi yêu cầu tới máy chủ và máy chủ phản hồi một cách thích hợp.

Tôi nghĩ rằng những gì bạn đang cố gắng ngăn chặn là giả mạo cookie. Xem xét các cookie được lưu trữ ở phía máy khách, bạn không thể làm gì để ngăn người dùng sửa đổi nội dung của họ.

Không lưu trữ thông tin nhạy cảm trong cookie của bạn. Chúng không an toàn và dễ dàng đọc và sửa đổi bởi khách hàng.

Sử dụng phiên PHP thay thế. Lời giải thích đầy đủ về cách phiên làm việc và cách giữ an toàn cho các phiên có thể được đọc trong one of my previous answers.

Về cơ bản, đảm bảo phiên được thực hiện trên hai mặt trận:

  • Ngăn chặn phiên cố định
    Tái phát sinh một session_id mỗi số X mới của yêu cầu này để giảm số lượng thời gian một kẻ tấn công có để ăn cắp id.

  • Độc đáo xác định các khách hàng
    Sử dụng IP và/hoặc User-Agent để nhận diện khách hàng và kiểm tra giá trị trên mỗi tải trang so với những người được lưu trữ trong phiên. Đây thực sự là hai lựa chọn duy nhất bạn phải nhận dạng duy nhất máy khách.

Ngay cả với điều đó tại chỗ, không có giải pháp nào là chống lừa đảo và khi bạn đã thực hiện xong một số lỗi.

Một lần nữa, để có giải thích chi tiết, vui lòng xem my previous answer.

+0

okay thankyou có vẻ hữu ích – Jermain

+0

@Jainain: sau đó cảm thấy tự do để làm cho câu trả lời của bạn được chấp nhận câu trả lời bằng cách nhấp vào dấu kiểm bên trái của câu trả lời của tôi. –

+0

Tôi chưa đăng ký nhưng sau khi đã đăng ký, tôi sẽ – Jermain

2

Giả mạo những gì? HTTP chỉ là một giao thức để chuyển dữ liệu, nó không thực sự là một cái gì đó chính nó sẽ được giả mạo.

Điều cần làm là không ngăn chặn giả mạo thông tin, nhưng đơn giản là không bao giờ tin tưởng khách hàng. Trong điều khoản của cookie, lưu trữ một giá trị giả ngẫu nhiên băm mà bạn so sánh với cơ sở dữ liệu trước khi chấp nhận dữ liệu cookie.

CẬP NHẬT:

Cho rằng nó là đặc biệt cookie mà bạn lo ngại về, tôi sẽ đi thêm một chút chiều sâu. Có hai điều chính bạn phải quan tâm khi lưu trữ cookie.

  1. Không lưu trữ dữ liệu thực tế
  2. Validate chống lại cơ sở dữ liệu

Vì vậy, hãy nói rằng bạn muốn có một trang web với người sử dụng, nơi bạn lưu trữ dữ liệu cá nhân. Trong cookie, bạn có thể lưu trữ tên người dùng hoặc ID người dùng và mã bảo mật được băm mà cũng được lưu trữ trong cơ sở dữ liệu khi người dùng đăng nhập. Mã thông báo bảo mật sẽ không thể biết được và sẽ thay đổi với mỗi lần đăng nhập. Mọi thông tin cá nhân đều nằm trong cơ sở dữ liệu, không bao giờ có trong cookie.

Một số đọc thêm về thực hành tốt nhất: http://jaspan.com/improved_persistent_login_cookie_best_practice

+0

, chúng tôi cần phát hiện các nỗ lực giả mạo các thư HTTP nếu điều đó giúp ích? – Jermain

+0

Có lẽ bạn có thể mô tả một ví dụ cụ thể về những gì bạn nghĩ có thể xảy ra. –

+0

Nếu ai đó phát hiện ra cookie mà PHP sử dụng để quản lý phiên, thì điều gì là để ngăn ai đó trên một máy khác đặt cookie theo cách thủ công với cùng một giá trị và giả vờ là bạn? – Jermain

2

Nếu bạn muốn ngăn chặn man-in-the-middle nghe trộm, bạn có thể muốn sử dụng HTTPS, mà tạo ra một kênh an toàn qua mạng, với điều kiện đầy đủ bộ mã hoá được sử dụng và đó chứng chỉ máy chủ là verified and trusted.

Lưu ý: Câu hỏi ban đầu không rõ ràng. Bây giờ rõ ràng là câu hỏi là về giả mạo cookie.

+1

Câu hỏi này thực sự vô nghĩa, vì vậy câu trả lời này cung cấp lời khuyên tốt cho * một * giải thích về nó. – deceze

+0

vâng tôi đã đề cập đến tôi là một người mới, vì vậy hãy xem xét, đã bắt đầu một nơi nào đó – Jermain

+0

Bạn đang phải, do đó tôi đã xóa -1 của tôi. –

0

Giả mạo? Vấn đề thực sự duy nhất với danh tính bị xâm phạm là trộm cắp cookie.

Điều bạn có thể làm là, bất cứ khi nào cookie được gửi qua tiêu đề HTTP, để kiểm tra điều này dựa vào địa chỉ IP được phát hành. Ví dụ:

<?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!"; 
    } 
} 
?> 

Nhưng điều này có thể ảnh hưởng tiêu cực đến những người mà ISP phát hành địa chỉ IP động.

+0

Tôi không chắc chắn "lời khuyên" hữu ích như thế nào. Điều này không chỉ bắt những người có địa chỉ IP động mà còn cả những người sử dụng thiết bị di động như máy tính xách tay. Di chuyển từ văn phòng này sang văn phòng khác có thể là đủ để bạn mã hóa để xác định chúng như là các chủ đề cookie. Tôi không đề nghị cái này. – T9b

0

Tôi biết điều này đã được trả lời nhưng tôi muốn thêm một kỹ thuật khác mà tôi sử dụng, đặc biệt hữu ích cho việc đăng nhập quản trị của nó. Sử dụng các phiên như bình thường nhưng thêm bảo vệ thư mục vào danh sách kết hợp.

Bằng cách đó, nếu một phiên bị tấn công, kẻ tấn công cũng phải có khả năng nhận thông tin đăng nhập thư mục.

Tôi sử dụng kỹ thuật này để quản trị diễn đàn. một số diễn đàn được dễ dàng tấn công và điều này làm giảm cơ hội của một hacker xâm nhập vào và gây ra các vấn đề nghiêm trọng.

DC

Các vấn đề liên quan