Tôi nghĩ là nó có thể giúp một phần trong chống DDoS chứ không phòng được DDoS. Rate limit không ngăn được DDoS xảy ra hay không nên nó không phòng được.
Đối diện với 1 cuộc tấn công DDoS thì thường ngay cả rate limit cũng treo luôn. Trừ phi bạn cô lập botnet ra khỏi hệ thống của mình. Rate limit được cài đặt trên applicaiton server, hoặc load balancer, hoặc router. Cả ba thành phần này đều thuộc hệ thống của bạn và đều chịu sự tấn công của DDoS. Rate limit có thể tăng khả năng chịu tải của hệ thống và có thể giúp hệ thống sống sót. Nhưng một vụ tấn công DDoS nghiêm túc là đánh sập con router của bạn chứ không phải làm treo mấy con server bên trong nên tôi nghĩ rate limit khó có thể coi là một cách để chống DDoS. Chống spam thì được. Spam thì không sử dụng botnet, rate limit có thể block hành động này chứ không phải chỉ hạn chế. Hạn chế thì có thể là hạn chế crawler.
số lượng từ khóa người dùng nhập vào ít hơn nhiều so với dữ liệu được index
Dù có hàng triệu người dùng, nhưng số lượng từ khóa được sử dụng giới hạn trong một tập nhỏ. Lưu lượng cho từ khóa cũng giới hạn trong một tập rất nhỏ mang tính xu hướng. Trong trường hợp này, caching sẽ hiệu quả.
Bài viết đang dùng cây nhị phân. Có thể dùng cây k đường. VD với 26 chữ cái latinh thì cây này có 26 nhánh.
Lucene, solr, elasticsearch đã giải quyết vấn đề này thế nào?
Cảm ơn bác đã góp ý. Đọc lại tôi cũng thấy cấn cấn. Xin được nhờ bác gợi ý giúp tôi cách diễn tả chính xác hơn. Có thể gọi là "phòng chống DDoS, hạn chế spam" được không nhỉ
Ý bạn là về công dụng của hàm setCurrentRefreshToken đúng k?!! Mình dùng để lưu lại refresh token vào Database sau khi đăng nhập hoặc đăng ký mục đích tăng bảo mật. Khi user tiến hành dùng refresh token thì sẽ lấy currentRefreshToken ra check bằng hàm getUserIfRefreshTokenMatched và nếu Match thì mình mới trả về Access token mới. Trong trường hợp refresh token bị lộ thì mình chỉ cần vào Database xoá token của user đó thì hacker sẽ k thể lấy refresh token mới.😁
Trong bài toán này: master data là cụm chủ để đã được phân loại từ trước.Ví dụ chủ đề về Sa, Se, Tester, DevOp với các mô tả tương ứng với mỗi role. Sau đấy một bài viết mới được tạo ra sẽ so sánh với mô tả của mỗi role để chọn tag có độ tương đồng cao nhất. Khi đấy em có thể xác định được chủ đề của bài viết mới cho role gì
Còn việc xây dựng master data thì rất quan trọng để thuật toán đưa ra kết quả chính xác. Theo anh biết để xin được master data rất khó, mình phải tự build thôi. Hy vọng là giúp em được một phần
"khi đi qua router, nó sẽ tự mapping lại đúng địa chỉ ip lúc đầu": mình nghĩ bạn đang đề cập tới cơ chế NAT, nó nằm ngoài phạm vi bài viết của mình, mình có thể giải thích nhanh phía dưới.
"với mỗi card mạng ảo, mình có thể tạo 1 line mạng khác nhau": đúng. Ví dụ thực tế máy bạn có thể cắm 2 dây mạng, hoặc vừa cắm được dây mạng vừa có kết nối wifi, thì từ phía router-wifi sẽ nhìn thấy 2 máy khác nhau, có 2 ip khác nhau nhưng lại trùng tên thiết bị vì bản chất là một máy, thành ra một máy tính nhưng lại có nhiều ip. Về mặt hệ điều hành (cái này mình chưa dám khẳng định, tuy nhiên dựa trên kiến thức của mình) thì hệ điều hành có thể hoàn toàn tạo bao nhiêu card mạng ảo tùy thích, miễn mỗi card mạng ảo có địa chỉ MAC khác nhau, sau đó khi kết nối vào router-wifi, hệ điều hành sẽ present đống MAC đó, từ phía router nó sẽ nhận diện là nhiều thiết bị đang muốn kết nối, router sẽ "phân phát" ip cho mỗi địa chỉ MAC nhưng thực chất về cùng một máy, từ đó máy bạn có thể có nhiều ip và backend có thể bind vào các địa chỉ mạng ảo đó và ... bạn làm gì với nó là việc của bạn ))
NAT: đây là cơ chế giải quyết vấn đề về giới hạn số lượng khoảng 2^32 ~ 4 tỉ ipv4. Nói đến NAT thì phải nói tới private (local) ip và public ip. Trong mạng local thì các máy dùng địa chỉ private ip (VD: 10.x.x.x, 192.168.x.x, 172.x.x.x (*)).
Khi gói tin từ máy trong mạng local đi qua router ra public internet thì router sẽ lưu mapping địa chỉ ip private + port private <---> ip public của router + port router (đoạn này mình không chắc đúng là router sẽ làm như vậy hay không, nhưng ý tưởng thì sẽ như vậy), từ đây gói tin đi ra ngoài internet với source là ip public của router và port của router. Sau đó khi gói tin đi từ public internet về router thì router sẽ dùng bảng mapping đó để biết trả gói tin đó về cho máy nào trong mạng local. Lúc này không cần biết là card mạng ảo hay card mạng thật, miễn gói tin đi đúng máy cần nhận là được.
Bác nói đúng, file signature cũng có thể bị fake! Phía trên cũng chỉ là những phần cơ bản thôi, còn về mục đích thì khó nói lắm, phải thử tấn công vào hệ thống thì mới biết mình có thể làm gì được. Đương nhiên thì cũng có những lời khuyên đi trước rồi, sẵn đây thì mình khuyến khích anh em nên tách và cô lập phần file server ra, có tiền thì dùng bên thứ 3 cũng tốt.
cho dù có kiểm tra cả signature thì vẫn có thể lừa đc , tuy nhiên nên đặt câu hỏi, họ fake để làm gì , nếu đập tắt đc mục đích của họ thì họ sẽ ko fake nữa
vậy có phải khi đi qua router , nó sẽ tự mapping lại đúng các địa chỉ ip mà lúc đầu mình khai báo không nhỉ, như vậy với mỗi card mạng ảo, ta có thể tạo 1 line mạng khác nhau
THẢO LUẬN
làm thế nào để sử dụng nó vào angular vậy ạ
@refacore Vô cùng cảm ơn bác đã chia sẻ kinh nghiệm giúp tôi hiểu kỹ hơn ⭐️
Tôi nghĩ là nó có thể giúp một phần trong chống DDoS chứ không phòng được DDoS. Rate limit không ngăn được DDoS xảy ra hay không nên nó không phòng được.
Đối diện với 1 cuộc tấn công DDoS thì thường ngay cả rate limit cũng treo luôn. Trừ phi bạn cô lập botnet ra khỏi hệ thống của mình. Rate limit được cài đặt trên applicaiton server, hoặc load balancer, hoặc router. Cả ba thành phần này đều thuộc hệ thống của bạn và đều chịu sự tấn công của DDoS. Rate limit có thể tăng khả năng chịu tải của hệ thống và có thể giúp hệ thống sống sót. Nhưng một vụ tấn công DDoS nghiêm túc là đánh sập con router của bạn chứ không phải làm treo mấy con server bên trong nên tôi nghĩ rate limit khó có thể coi là một cách để chống DDoS. Chống spam thì được. Spam thì không sử dụng botnet, rate limit có thể block hành động này chứ không phải chỉ hạn chế. Hạn chế thì có thể là hạn chế crawler.
Đối với yêu cầu của bài này thì có 1 đặc điểm:
Bài viết đang dùng cây nhị phân. Có thể dùng cây k đường. VD với 26 chữ cái latinh thì cây này có 26 nhánh.
Lucene, solr, elasticsearch đã giải quyết vấn đề này thế nào?
nó lấy những file cần lấy thui. cho nên nó sẽ rất nhẹ.
Mãi không thấy tác giả ra bài viết mới.
mình vừa có thêm một bài viết chứa source code demo cơ bản, bạn tham khảo thử nhé
Cảm ơn bác đã góp ý. Đọc lại tôi cũng thấy cấn cấn. Xin được nhờ bác gợi ý giúp tôi cách diễn tả chính xác hơn. Có thể gọi là "phòng chống DDoS, hạn chế spam" được không nhỉ
rate limit ko phải để chặn ddos, cũng ko chặn đc ddos.
Dùng pnpm và prisma thì cần chú ý thêm gì không bạn ?
Ý bạn là về công dụng của hàm
setCurrentRefreshToken
đúng k?!! Mình dùng để lưu lại refresh token vào Database sau khi đăng nhập hoặc đăng ký mục đích tăng bảo mật. Khi user tiến hành dùng refresh token thì sẽ lấycurrentRefreshToken
ra check bằng hàmgetUserIfRefreshTokenMatched
và nếu Match thì mình mới trả về Access token mới. Trong trường hợp refresh token bị lộ thì mình chỉ cần vào Database xoá token của user đó thì hacker sẽ k thể lấy refresh token mới.😁Bài viết rất hữu ích. Cám ơn bạn. Xin hỏi lệnh COPY . . Nghĩa là gì vậy bạn?
Trong bài toán này: master data là cụm chủ để đã được phân loại từ trước.Ví dụ chủ đề về Sa, Se, Tester, DevOp với các mô tả tương ứng với mỗi role. Sau đấy một bài viết mới được tạo ra sẽ so sánh với mô tả của mỗi role để chọn tag có độ tương đồng cao nhất. Khi đấy em có thể xác định được chủ đề của bài viết mới cho role gì
Còn việc xây dựng master data thì rất quan trọng để thuật toán đưa ra kết quả chính xác. Theo anh biết để xin được master data rất khó, mình phải tự build thôi. Hy vọng là giúp em được một phần
Có 2 chi tiết trong comment của bạn:
NAT: đây là cơ chế giải quyết vấn đề về giới hạn số lượng khoảng 2^32 ~ 4 tỉ ipv4. Nói đến NAT thì phải nói tới private (local) ip và public ip. Trong mạng local thì các máy dùng địa chỉ private ip (VD: 10.x.x.x, 192.168.x.x, 172.x.x.x (*)). Khi gói tin từ máy trong mạng local đi qua router ra public internet thì router sẽ lưu mapping địa chỉ ip private + port private <---> ip public của router + port router (đoạn này mình không chắc đúng là router sẽ làm như vậy hay không, nhưng ý tưởng thì sẽ như vậy), từ đây gói tin đi ra ngoài internet với source là ip public của router và port của router. Sau đó khi gói tin đi từ public internet về router thì router sẽ dùng bảng mapping đó để biết trả gói tin đó về cho máy nào trong mạng local. Lúc này không cần biết là card mạng ảo hay card mạng thật, miễn gói tin đi đúng máy cần nhận là được.
Bác nói đúng, file signature cũng có thể bị fake! Phía trên cũng chỉ là những phần cơ bản thôi, còn về mục đích thì khó nói lắm, phải thử tấn công vào hệ thống thì mới biết mình có thể làm gì được. Đương nhiên thì cũng có những lời khuyên đi trước rồi, sẵn đây thì mình khuyến khích anh em nên tách và cô lập phần file server ra, có tiền thì dùng bên thứ 3 cũng tốt.
cho dù có kiểm tra cả signature thì vẫn có thể lừa đc , tuy nhiên nên đặt câu hỏi, họ fake để làm gì , nếu đập tắt đc mục đích của họ thì họ sẽ ko fake nữa
Jenkins is the best =))
vậy có phải khi đi qua router , nó sẽ tự mapping lại đúng các địa chỉ ip mà lúc đầu mình khai báo không nhỉ, như vậy với mỗi card mạng ảo, ta có thể tạo 1 line mạng khác nhau
Hôm e đi cái fossasia summit vào 1 buổi present thì có thống kê thế này :v ArgoCD vs Jenkin là được sử dụng nhiều nhất
php luôn học hỏi và sao chép các tính năng của các ngôn ngữ khác , giúp ng viết ng ng khác nhảy sang php vẫn thấy ko quá nhiều khác biệt