Request "lạ"

Nếu là một web developer thì bạn cũng ít nhiều phải đụng chạm tới proxy/load balancer hay app server. Trong rất nhiều thao tác với phần này thì việc thường xuyên kiểm tra log để phát hiện ra những điều bất thường là thao tác không thể bỏ qua.

Ngữ cảnh

Một khi website/service đã public thì có nghĩa là nó đã được "phơi" ra giữa thế giới internet. Thế giới internet cũng giống thế giới con người ở khía cạnh "ở đâu cũng có người này người kia". Nghĩa là có những request ghé thăm với mục đích trong sáng, cũng có những request mang tính thăm dò, phá hoại.
Vậy thì bạn cần phản ứng thế nào với từng loại request không có thiện ý này?

Ví dụ #1

185.130.5.207 - - [23/Dec/2015:20:32:19 +0900] "GET //myadmin/scripts/setup.php HTTP/1.1" 404 2413 "-" "-"
185.130.5.207 - - [23/Dec/2015:20:32:19 +0900] "GET //phpMyAdmin/scripts/setup.php HTTP/1.1" 404 2413 "-" "-"
185.130.5.207 - - [14/Jan/2016:11:47:07 +0900] "GET //websql/scripts/setup.php HTTP/1.1" 404 2413 "-" "-"

Ví dụ #2

61.231.4.180 - - [01/Sep/2015:17:51:01 +0900] "CONNECT vip163mx01.mxmail.netease.com:25 HTTP/1.0" 400 172 "-" "-"
111.248.118.30 - - [01/Sep/2015:22:53:04 +0900] "CONNECT 163mx01.mxmail.netease.com:25 HTTP/1.0" 400 172 "-" "-"
141.212.122.90 - - [02/Sep/2015:22:55:32 +0900] "CONNECT proxytest.zmap.io:80 HTTP/1.1" 400 172 "-" "-"

Ví dụ #3

Giả sử domain của bạn là https://abc.com, nhưng lại nhận được những request như sau:

146.185.239.100 - - [12/Jan/2016:10:00:55 +0900] "GET http://www.alexa.com/ HTTP/1.1" 200 19871 "-" "-"
146.185.239.100 - - [12/Jan/2016:10:25:16 +0900] "GET http://www.alexa.com/ HTTP/1.1" 200 19871 "-" "-"

Chi tiết về 3 loại log trên có ở link này

Cách khắc phục

Nếu ở ví dụ #1 và #2 có status của request là 2XX thì nghĩa là hở rồi, vá thôi.
Còn ở #3 thì bạn telnet vào host https://abc.com, thực hiện GET một external host khác. Nếu như data trả về là data của external host, thì lại hở rồi, vá thôi :D

Liên hệ bản thân

Mình từng gặp 1 case khá oái oăm liên quan đến #3 và Rails như sau:
Ở trang homepage của web, mình có cache partial như sau:

cache "this_partial" do
<%= link_to 'Link Name', resouce_url %> (*)
end

Và ngay sau khi mình deploy thì có 1 request dạng #3 đổ về, đã biến link (*) của mình thành:

<a href="http://www.alexa.com/resouce">Link Name</a>

thay vì

<a href="https://abc.com/resouce">Link Name</a>

Fix bằng cách đưa absolute url về relative path ngay. Hú hồn.

Rất mong nhận được chia sẻ về nhiều dòng log "lạ" nữa từ kipaloger.


Ref:
https://wiki.apache.org/httpd/ProxyAbuse
http://www.the-art-of-web.com/system/telnet-http11/

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

ManhDV

21 bài viết.
36 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
39 6
TL; DR Cấu hình mastermaster trên nhiều node EC2 Mỗi node có nhiều database, với schema giống hệt nhau. Thực hiện điều phối việc read/write b...
ManhDV viết hơn 1 năm trước
39 6
White
14 0
Background Với những database có lượng read lớn thì tầm quan trọng của việc warmup BP đã được nhắc tới nhiều. Nhưng nó có hiệu quả tới mức như thế...
ManhDV viết hơn 1 năm trước
14 0
White
14 3
Background Bạn có nhớ gì về hồi cấp 3 ko? Ý mình ko phải là hình ảnh em gái xinh nhất khối mặc áo trong và ngoài có mã màu lần lượt là 000 và fff ...
ManhDV viết hơn 1 năm trước
14 3
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
21 bài viết.
36 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!