2013-02-04 34 views
34

Tôi có một cookie KHÔNG PHẢI là HttpOnly Tôi có thể đặt cookie này thành HttpOnly qua JavaScript không?Đặt cookie thành HttpOnly qua Javascript

+1

Làm cách nào để có thể đặt cookie bằng JavaScript mà chính JavaScript đó không được phép thao tác? Chỉ cần đặt nó ở phía máy chủ. – BalusC

+1

Cookie không phải là HttpOnly và tôi muốn đặt nó thành HttpOnly qua Javascript. –

+3

Tôi nghĩ rằng bạn bỏ lỡ điểm của HttpOnly. – BalusC

Trả lời

73

A HttpOnly cookie có nghĩa là không phải là có sẵn cho các ngôn ngữ kịch bản như JavaScript. Vì vậy, có trong JavaScript hoàn toàn không có API để có được/thiết lập các thuộc tính HttpOnly của cookie, vì nếu không sẽ đánh bại ý nghĩa của HttpOnly.

Chỉ cần đặt nó như vậy ở phía máy chủ bằng cách sử dụng bất kỳ ngôn ngữ phía máy chủ nào mà phía máy chủ đang sử dụng. Nếu JavaScript là hoàn toàn cần thiết trong điều này, bạn có thể xem xét để cho phép nó gửi một số yêu cầu (ajax) với ví dụ: một số tham số yêu cầu cụ thể kích hoạt ngôn ngữ phía máy chủ để tạo một cookie HttpOnly. Tuy nhiên, điều đó sẽ khiến hacker dễ dàng thay đổi số HttpOnly chỉ bằng XSS và vẫn có quyền truy cập cookie thông qua JS và do đó làm cho HttpOnly trên cookie của bạn hoàn toàn vô dụng.

+2

Tôi tự hỏi làm thế nào có thể một ứng dụng phía khách hàng như "EditThisCookie" mở rộng trình duyệt thay đổi cờ HttpOnly thành false. – pavanw3b

+1

@ PavanW3b: Nó không sử dụng ngôn ngữ kịch bản phía máy khách như JavaScript cho điều đó. Nó chỉ là một phần mở rộng của trình duyệt. – BalusC

+0

Tôi đã tìm ra từ bài viết dưới đây và nhận xét rằng Tiện ích mở rộng của Trình duyệt có đặc quyền nâng cao để sửa đổi cookie HttpOnly. http://www.troyhunt.com/2013/03/c-is-for-cookie-h-is-for-hacker.html#comment-2264963488 – pavanw3b

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