ನಿಮ್ಮ ರೇಟ್ ಲಿಮಿಟರ್ (Rate Limiter) ಒಂದು ಭದ್ರತಾ ನಿಯಂತ್ರಣವಲ್ಲ
ಒಂದು ಬಾಟ್ (bot) ಕೆಲವೇ ನಿಮಿಷಗಳಲ್ಲಿ ನನ್ನ API ಯಿಂದ ಒಂದು ಪಾಸ್ಪೋರ್ಟ್ಗೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಪಡೆದುಕೊಂಡಿತು.
ನನ್ನ ರೇಟ್ ಲಿಮಿಟರ್ ಅದನ್ನು ತಡೆಯಲಿಲ್ಲ.
ಮಿತಿಯು ತಿಂಗಳಿಗೆ 3,000 ಕರೆಗಳಾಗಿತ್ತು (calls). ಒಂದು ಪೂರ್ಣ ಪಾಸ್ಪೋರ್ಟ್ ಸ್ಕ್ಯಾನ್ ಮಾಡಲು ಕೇವಲ 195 ಕರೆಗಳು ಬೇಕಾಗುತ್ತವೆ. ಆ ಬಾಟ್ ನನ್ನ ಮಿತಿಯ ಒಳಗೇ ಇದ್ದು ಎಲ್ಲವನ್ನೂ ಕದಿಯಿತು.
ರೇಟ್ ಲಿಮಿಟಿಂಗ್ ನಿಮ್ಮ ಮೂಲಸೌಕರ್ಯ ವೆಚ್ಚಗಳನ್ನು (infrastructure costs) ರಕ್ಷಿಸುತ್ತದೆ. ಆದರೆ ಅದು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ರಕ್ಷಿಸುವುದಿಲ್ಲ.
ನೀವು ಈ ಎರಡು ವಿಚಾರಗಳನ್ನು ಗೊಂದಲ ಮಾಡಿಕೊಂಡರೆ, ನಿಮ್ಮ ಡೇಟಾ ಸೋರಿಕೆಯಾಗಬಹುದು.
ರೇಟ್ ಲಿಮಿಟರ್ಗಳು ಒಂದು ಪ್ರಶ್ನೆಯನ್ನು ಕೇಳುತ್ತವೆ: ಈ ಕ್ಲೈಂಟ್ (client) ಈಗ ನನಗೆ ತುಂಬಾ ಹಣದ ನಷ್ಟ ಮಾಡುತ್ತಿದ್ದಾನೆಯೇ?
ಸ್ಕ್ರೇಪರ್ಗಳು (Scrapers) ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿಯೇ ಆ ಮಿತಿಯ ಒಳಗೇ ಇರುತ್ತವೆ. ನನ್ನ ಸ್ಕ್ರೇಪರ್ ಪ್ರತಿ ನಿಮಿಷಕ್ಕೆ 25 ವಿನಂತಿಗಳ (requests) ವೇಗದಲ್ಲಿ ಚಲಿಸುತ್ತಿತ್ತು. ಅದು ಅತ್ಯಲ್ಪ ಲೋಡ್ (load). ನನ್ನ ಇಡೀ ಡೇಟಾಸೆಟ್ ಅನ್ನು ಕಾಪಿ ಮಾಡಲು ಅದಕ್ಕೆ ಕೇವಲ 40,000 ಕರೆಗಳು ಬೇಕಾಗುತ್ತವೆ. ಒಬ್ಬ ಹ್ಯಾಕರ್ ಅನೇಕ ಉಚಿತ ಖಾತೆಗಳನ್ನು ಬಳಸಿದರೆ, ಯಾವುದೇ ವಾಲ್ಯೂಮ್ ಕ್ಯಾಪ್ (volume cap) ಅವರನ್ನು ಹಿಡಿಯಲು ಸಾಧ್ಯವಿಲ್ಲ.
ಕೇವಲ ಪ್ರಮಾಣವನ್ನು (volume) ನೋಡುವುದನ್ನು ನಿಲ್ಲಿಸಿ. ಗುರುತು (identity), ವ್ಯಾಪ್ತಿ (coverage) ಮತ್ತು ಮಾದರಿಯನ್ನು (pattern) ಗಮನಿಸಿ.
ನಾನು ಎರಡು ತಪ್ಪುಗಳನ್ನು ಮಾಡಿದೆ. ಮೊದಲನೆಯದಾಗಿ, ನಾನು ಮೂಲ IP ಅನ್ನು ಲಾಗ್ (log) ಮಾಡಲಿಲ್ಲ. ಒಬ್ಬ ಹ್ಯಾಕರ್ ಸುಲಭವಾಗಿ ಮತ್ತೆ ಉಚಿತವಾಗಿ ಸೈನ್ ಅಪ್ ಮಾಡಬಹುದು.
ಮೊದಲು ನಿಮ್ಮ ಲಾಗ್ಗಳನ್ನು ಸರಿಪಡಿಸಿ. ನಿಮ್ಮ ಡೇಟಾಬೇಸ್ಗೆ IP ಮತ್ತು ದೇಶದ ಕಾಲಂಗಳನ್ನು (columns) ಸೇರಿಸಿ. ರಿಮೋಟ್ ಅಡ್ರೆಸ್ ಬದಲಿಗೆ Cloudflare ನಿಂದ ಸಿಗುವ ನೈಜ ಕ್ಲೈಂಟ್ IP ಅನ್ನು ಬಳಸಿ. ಇದು ನೆಟ್ವರ್ಕ್ ಲೇಯರ್ನಲ್ಲಿ (network layer) ದಾಳಿಕಾರರನ್ನು ತಡೆಯಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.
ಎರಡನೆಯದಾಗಿ, ನಿಮ್ಮ ಮಿತಿಗಳನ್ನು ಬದಲಾಯಿಸಿ.
ಕೇವಲ ತಿಂಗಳಿಗೆ ಎಷ್ಟು ವಿನಂತಿಗಳು ಎಂಬ ಮಿತಿಯನ್ನು ಮಾತ್ರ ಇಡಬೇಡಿ. ಒಂದು ಪಾಸ್ಪೋರ್ಟ್ ದಿನಕ್ಕೆ ಎಷ್ಟು ವಿಭಿನ್ನ ಸ್ಥಳಗಳನ್ನು (destinations) ಪರಿಶೀಲಿಸಬಹುದು ಎಂಬುದಕ್ಕೆ ಮಿತಿ ಇರಿಸಿ. ಒಬ್ಬ ನೈಜ ಬಳಕೆದಾರನು ಕೆಲವು ಸ್ಥಳಗಳನ್ನು ಮಾತ್ರ ಪರಿಶೀಲಿಸುತ್ತಾನೆ. ಆದರೆ ಸ್ಕ್ರೇಪರ್ ಎಲ್ಲವನ್ನೂ ಪರಿಶೀಲಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ.
ಡೇಟಾ ಸ್ವೀಪ್ (data sweep) ಒಂದು ನಿರ್ದಿಷ್ಟ ಲಕ್ಷಣವನ್ನು ಹೊಂದಿರುತ್ತದೆ:
- ಇದು ಸಾಂದ್ರವಾಗಿರುತ್ತದೆ (dense).
- ಇದು ಅನುಕ್ರಮವಾಗಿರುತ್ತದೆ (sequential).
- ಇದು ಒಂದು ಮೂಲಕ್ಕಾಗಿ ಎಲ್ಲವನ್ನೂ ಒಳಗೊಳ್ಳುತ್ತದೆ.
ಚಟುವಟಿಕೆಯ ಸ್ಲೈಡಿಂಗ್ ವಿಂಡೋವನ್ನು (sliding window) ಗಮನಿಸುವ ಮೂಲಕ ನೀವು ಈ ಮಾದರಿಯನ್ನು ಪತ್ತೆಹಚ್ಚಬಹುದು. ಒಂದು ಪಾಸ್ಪೋರ್ಟ್ ಅಲ್ಪಾವಧಿಯಲ್ಲಿ ಅತಿಯಾದ ಸ್ಥಳಗಳನ್ನು ಪರಿಶೀಲಿಸಿದರೆ, ಅದನ್ನು ಫ್ಲ್ಯಾಗ್ (flag) ಮಾಡಿ. ಆ ಕೀ (key) ಅನ್ನು ತಗ್ಗಿಸಿ (throttle) ಅಥವಾ ತಕ್ಷಣವೇ ಬ್ಲಾಕ್ ಮಾಡಿ.
ಈಗ ನೀವು ಕೇವಲ ಸಂಖ್ಯೆಗಳನ್ನು ಎಣಿಸುವ ಬದಲು ವರ್ತನೆಗೆ (behavior) ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತೀರಿ.
ನಿಮ್ಮ ಕಾರ್ಯತಂತ್ರವನ್ನು ಎರಡು ಕೆಲಸಗಳಾಗಿ ವಿಂಗಡಿಸಿ:
- ರೇಟ್ ಲಿಮಿಟರ್ (Rate Limiter): ನಿಮ್ಮ ಹಣವನ್ನು ರಕ್ಷಿಸಿ. ಪ್ರತಿ ಕೀ (per-key) ವೋಲ್ಯೂಮ್ ಕ್ಯಾಪ್ಗಳನ್ನು ಬಳಸಿ.
- ಎಕ್ಸ್ಟ್ರಾಕ್ಷನ್ ಡಿಫೆನ್ಸ್ (Extraction Defense): ನಿಮ್ಮ ಡೇಟಾವನ್ನು ರಕ್ಷಿಸಿ. ಗುರುತು, ವ್ಯಾಪ್ತಿ ಮತ್ತು ಲಯವನ್ನು (cadence) ಬಳಸಿ.
ನಿಮ್ಮ ಬಳಿ ರೇಟ್ ಲಿಮಿಟರ್ ಇದ್ದರೆ, ಅದು ಕೇವಲ ಬಿಲ್ಲಿಂಗ್ ಗಾರ್ಡ್ರೈಲ್ (billing guardrail) ಮಾತ್ರ. ಅದು ಭದ್ರತೆಯಲ್ಲ.
Source: https://dev.to/mathis_higuinen_6db9b244c/your-rate-limiter-is-not-a-security-control-4b3f
