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?
Trả lời
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ộtsession_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.
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.
- Không lưu trữ dữ liệu thực tế
- 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
, 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
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. –
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
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.
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.
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
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
- 1. Làm cách nào để ngăn chặn IIS7 xóa cookie?
- 2. Làm cách nào để ngăn chặn cảnh báo StyleCop SA1403?
- 3. Làm thế nào để ngăn chặn DLL tiêm
- 4. Làm thế nào để ngăn chặn ajax yêu cầu
- 5. Làm cách nào để phát sóng từ trình chặn chặn http?
- 6. Làm thế nào để ngăn chặn Solr với dòng lệnh
- 7. Làm thế nào để ngăn chặn tấn công phiên tomcat?
- 8. Làm thế nào để ngăn chặn root chạy git pull?
- 9. Làm thế nào để ngăn chặn một NSInvocationOperation?
- 10. ASP.NET MVC: làm thế nào để ngăn chặn khóa phiên?
- 11. Làm thế nào để ngăn chặn cảnh báo trong octave
- 12. Làm thế nào để ngăn chặn ảnh hưởng trong jQuery
- 13. Làm thế nào để ngăn chặn dòng trống trong Jekyll?
- 14. Làm thế nào để ngăn chặn Node.js yêu cầu nhanh
- 15. Làm thế nào để ngăn chặn vĩ mô redefinition
- 16. Làm thế nào để ngăn chặn SQL Injection trong hibernate?
- 17. làm thế nào để ngăn chặn array_merge renumber phím số
- 18. Làm thế nào để ngăn chặn tràn bộ đệm memcpy?
- 19. Làm thế nào để ngăn chặn một sợi?
- 20. Làm thế nào để ngăn chặn java.lang.OutOfMemoryError: PermGen không gian?
- 21. Làm thế nào để ngăn chặn thông báo lỗi OpenCV
- 22. làm thế nào để ngăn chặn maven xây dựng bằng cách sử dụng checkstyle
- 23. Làm cách nào để cải thiện thuật toán này để ngăn chặn TLE là gửi SPOJ?
- 24. Làm cách nào để ngăn chặn việc xóa bỏ các thẻ <script>
- 25. Làm thế nào để ngăn chặn tràn ngăn xếp bằng cách theo dõi kích thước ngăn xếp?
- 26. Cách ngăn chặn gửi biểu mẫu
- 27. Làm cách nào để chặn hình?
- 28. Làm cách nào để ngăn chặn đầu ra HTML từ PHP hiển thị trong trình duyệt?
- 29. làm cách nào để ngăn chặn Sinatra ghi lại tên tiêu đề của tôi?
- 30. Làm cách nào để ngăn chặn "Dừng chạy tập lệnh này" trong trình duyệt?
URL là gì ?? –
đang được tải lên khi chúng tôi đã hoàn tất các vấn đề bảo mật – Jermain