Suhosin, Cookie và bug

trong danh mục PHP, Security

suhosin-cookie-bug

Dạo này tự nhiên thấy cái tính năng toggle grid view/table view (http://reader.vn/book.php) tự nhiên không chạy, vô xem code thì thấy mình hoàn toàn không động chạm chức năng này từ dạo ấy, chả hiểu sao nó không chạy, thế là tối nay quyết tâm debug xem nó bị gì.


Toggle grid view/table view là một tính năng tùy chỉnh cách hiển thị sách và dựa trên Cookie để lưu tùy chọn của người dùng để lần sau hiển thị cho phù hợp.

Trong khi lần mò thì phát hiện một lỗi rất ư là kỳ cục chả hiểu sao không nhận được Cookie này phía server, khiến cho tính năng này không chạy (vì giá trị biến là NULL). Rõ ràng dùng đồ chơi trên Chrome thấy có rất nhiều Cookie(bao gồm cả Session cookie), kể cả trong Inspector cũng thấy HTTP Request có string cookie rất dài, vậy mà lên server thì chả thấy gì cả ngoài cái session cookie – Thật là kì cục kẹo!

Google Chrome Inspector

Google Chrome Inspector

Thử lại thao tác này trên con server khác thì thấy bình thường, xem cookie trên đồ chơi thế nào thì trên server output y như thế, vậy mà server của Reader thì không show ra hết. Thà nó không show gì hết, hoặc show tất cả, vậy mà chỉ có 1,2 ông nào đó.

Liên quan đến cookie, bật phpinfo() để xem thì thấy có 1 số setting liên quan đến cookie mà thôi. Xưa giờ xài cookie có bị hiện tượng này bao giờ đâu ?!!. Mò chập hồi thì thấy…suhosin có một đống setting liên quan đến cookie. Suhosin được đưa vào diện nghi ngờ cao nhất vì chỉ có ổng có khả năng can thiệp được quá trình parsing cookie từ HTTP Request thành biến superglobal $_COOKIE.

Nếu mọi người không biết Suhosin là gì thì có thể tham khảo tại địa chỉ http://www.hardened-php.net/suhosin/. Nói ngắn gọn, Suhosin là một PHP extension giúp tăng cường một số lớp bảo mật và vá một số lỗi nghiêm trọng cho PHP.

phpinfo() suhosin extension

Suhosin extension in phpinfo()

Thấy 1 setting rất khả nghi là suhosin.cookie.encrypt, tức là chế độ encrypt cookie data. Thử cho ông nội này Off (mặc định là On) và restart web server…bump. Mọi thứ đã trở lại bình thường và cookie hoạt động như chưa hề có cuộc chia ly. Đôi dòng chia sẻ nếu ai xài suhosin và có dấu hiệu bất thường với Cookie có thể khoanh vùng để debug.

Sau đợt này rút kinh nghiệm là install thêm các extension có nhiều setting nên dành chút thời gian coi kỹ các setting có thể ảnh hưởng tới các tính năng hiện tại của website.

Thế mà cứ tưởng code bị lỗi…phù.

Một bình luận

  1. DiorFanci says:

    Bạn cho mình hỏi ngoài lề 1 chút nhé
    Cái phần hover lên cover trên trang chủ reader đó bạn. Mình thấy hình như bạn sử dụng jQuery để lấy thông tin từ 1 page php khác rồi đưa vào Tooltips.
    Vậy cho mình hỏi về kết cấu file php đó 1 chút là cứ lấy data thẳng từ MySQL ra có được không và liệu có thể bị hack ko
    Lấy thẳng ở đây nghĩa là lấy trực tiếp dữ liệu qua câu lệnh get mà ko dùng function nào khác nhé bạn.
    Xin cảm ơn

Gởi bình luận