ವಿಷಯ ಭದ್ರತಾ ನೀತಿ (CSP) ಮೂಲಕ ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ (XSS) ದಾಳಿಗಳನ್ನು ಹೇಗೆ ಪರಿಣಾಮಕಾರಿಯಾಗಿ ತಗ್ಗಿಸಬಹುದು ಮತ್ತು ಜಾಗತಿಕವಾಗಿ ವೆಬ್ ಭದ್ರತೆಯನ್ನು ಹೆಚ್ಚಿಸಬಹುದು ಎಂಬುದನ್ನು ತಿಳಿಯಿರಿ.
ವಿಷಯ ಭದ್ರತಾ ನೀತಿ (CSP): XSS ತಡೆಗಟ್ಟುವಿಕೆಗೆ ಒಂದು ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ
ಇಂದಿನ ಡಿಜಿಟಲ್ ಯುಗದಲ್ಲಿ, ವೆಬ್ ಭದ್ರತೆ ಅತ್ಯಂತ ಮಹತ್ವದ್ದಾಗಿದೆ. ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ (XSS) ದಾಳಿಗಳು ಜಾಗತಿಕವಾಗಿ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಪ್ರಬಲ ಮತ್ತು ಅಪಾಯಕಾರಿ ಬೆದರಿಕೆಯಾಗಿ ಉಳಿದಿವೆ. ವಿಷಯ ಭದ್ರತಾ ನೀತಿ (CSP) ಒಂದು ಶಕ್ತಿಶಾಲಿ HTTP ಪ್ರತಿಕ್ರಿಯೆ ಹೆಡರ್ ಆಗಿದ್ದು, ಇದು ಭದ್ರತೆಯ ಹೆಚ್ಚುವರಿ ಪದರವನ್ನು ಒದಗಿಸುತ್ತದೆ, XSS ದುರ್ಬಲತೆಗಳ ಅಪಾಯವನ್ನು ತಗ್ಗಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಈ ಮಾರ್ಗದರ್ಶಿ CSP, ಅದರ ಅನುಷ್ಠಾನ ಮತ್ತು XSS ದಾಳಿಗಳಿಂದ ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ರಕ್ಷಿಸಲು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳ ಸಮಗ್ರ ಅವಲೋಕನವನ್ನು ನೀಡುತ್ತದೆ.
ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ (XSS) ಎಂದರೇನು?
ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ (XSS) ಒಂದು ರೀತಿಯ ಇಂಜೆಕ್ಷನ್ ದಾಳಿಯಾಗಿದ್ದು, ದುರುದ್ದೇಶಪೂರಿತ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಹಾನಿಕಾರಕವಲ್ಲದ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹ ವೆಬ್ಸೈಟ್ಗಳಿಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ. ದಾಳಿಕೋರರು ದುರುದ್ದೇಶಪೂರಿತ ಕೋಡ್ ಅನ್ನು, ಸಾಮಾನ್ಯವಾಗಿ ಬ್ರೌಸರ್-ಸೈಡ್ ಸ್ಕ್ರಿಪ್ಟ್ ರೂಪದಲ್ಲಿ, ಬೇರೆ ಅಂತಿಮ ಬಳಕೆದಾರರಿಗೆ ಕಳುಹಿಸಲು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬಳಸಿದಾಗ XSS ದಾಳಿಗಳು ಸಂಭವಿಸುತ್ತವೆ. ಈ ದಾಳಿಗಳು ಯಶಸ್ವಿಯಾಗಲು ಅನುವು ಮಾಡಿಕೊಡುವ ದೋಷಗಳು ಸಾಕಷ್ಟು ವ್ಯಾಪಕವಾಗಿದ್ದು, ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಬಳಕೆದಾರರಿಂದ ಇನ್ಪುಟ್ ಅನ್ನು ಅದನ್ನು ಮೌಲ್ಯೀಕರಿಸದೆ ಅಥವಾ ಎನ್ಕೋಡಿಂಗ್ ಮಾಡದೆ ಉತ್ಪಾದಿಸುವ ಔಟ್ಪುಟ್ನಲ್ಲಿ ಬಳಸುವ ಯಾವುದೇ ಸ್ಥಳದಲ್ಲಿ ಸಂಭವಿಸುತ್ತವೆ.
XSS ದಾಳಿಗಳಲ್ಲಿ ಮೂರು ಮುಖ್ಯ ವಿಧಗಳಿವೆ:
- ಸಂಗ್ರಹಿಸಿದ (ನಿರಂತರ) XSS: ದುರುದ್ದೇಶಪೂರಿತ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಗುರಿ ಸರ್ವರ್ನಲ್ಲಿ ಶಾಶ್ವತವಾಗಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ಡೇಟಾಬೇಸ್, ಸಂದೇಶ ವೇದಿಕೆ, ವಿಸಿಟರ್ ಲಾಗ್, ಕಾಮೆಂಟ್ ಕ್ಷೇತ್ರ ಇತ್ಯಾದಿಗಳಲ್ಲಿ). ಬಳಕೆದಾರರು ಬಾಧಿತ ಪುಟಕ್ಕೆ ಭೇಟಿ ನೀಡಿದಾಗ, ಸಂಗ್ರಹಿಸಿದ ಸ್ಕ್ರಿಪ್ಟ್ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ.
- ಪ್ರತಿಬಿಂಬಿತ (ಶಾಶ್ವತವಲ್ಲದ) XSS: ದುರುದ್ದೇಶಪೂರಿತ ಸ್ಕ್ರಿಪ್ಟ್ ವೆಬ್ ಸರ್ವರ್ನಿಂದ ಪ್ರತಿಬಿಂಬಿತವಾಗುತ್ತದೆ, ಉದಾಹರಣೆಗೆ ದೋಷ ಸಂದೇಶ, ಹುಡುಕಾಟ ಫಲಿತಾಂಶ ಅಥವಾ ವಿನಂತಿಯ ಭಾಗವಾಗಿ ಸರ್ವರ್ಗೆ ಕಳುಹಿಸಲಾದ ಕೆಲವು ಅಥವಾ ಎಲ್ಲಾ ಇನ್ಪುಟ್ ಅನ್ನು ಒಳಗೊಂಡಿರುವ ಯಾವುದೇ ಪ್ರತಿಕ್ರಿಯೆಯಲ್ಲಿ. ದುರುದ್ದೇಶಪೂರಿತ ಲಿಂಕ್ ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡುವಂತೆ ಅಥವಾ ದುರುದ್ದೇಶಪೂರಿತ ಸ್ಕ್ರಿಪ್ಟ್ ಹೊಂದಿರುವ ಫಾರ್ಮ್ ಅನ್ನು ಸಲ್ಲಿಸುವಂತೆ ಬಳಕೆದಾರರನ್ನು ಮೋಸಗೊಳಿಸಬೇಕು.
- DOM-ಆಧಾರಿತ XSS: ದುರ್ಬಲತೆಯು ಕ್ಲೈಂಟ್-ಸೈಡ್ ಕೋಡ್ನಲ್ಲಿಯೇ ಇರುತ್ತದೆ. ಬ್ರೌಸರ್ನ DOM ಪರಿಸರವನ್ನು ದಾಳಿಕೋರನ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಸೇರಿಸಲು ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸಲಾಗಿರುವುದರಿಂದ ದುರುದ್ದೇಶಪೂರಿತ ಸ್ಕ್ರಿಪ್ಟ್ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ.
XSS ದಾಳಿಗಳು ಗಂಭೀರ ಪರಿಣಾಮಗಳನ್ನು ಬೀರಬಹುದು, ಅವುಗಳೆಂದರೆ:
- ಬಳಕೆದಾರರ ರುಜುವಾತುಗಳನ್ನು (ಕುಕೀಗಳು, ಸೆಷನ್ ಟೋಕನ್ಗಳು) ಕದಿಯುವುದು.
- ವೆಬ್ಸೈಟ್ಗಳನ್ನು ವಿರೂಪಗೊಳಿಸುವುದು.
- ಬಳಕೆದಾರರನ್ನು ದುರುದ್ದೇಶಪೂರಿತ ಸೈಟ್ಗಳಿಗೆ ಮರುನಿರ್ದೇಶಿಸುವುದು.
- ಮಾಲ್ವೇರ್ ಸ್ಥಾಪಿಸುವುದು.
- ಸೂಕ್ಷ್ಮ ಡೇಟಾಗೆ ಅನಧಿಕೃತ ಪ್ರವೇಶ ಪಡೆಯುವುದು.
ವಿಷಯ ಭದ್ರತಾ ನೀತಿ (CSP) ಎಂದರೇನು?
ವಿಷಯ ಭದ್ರತಾ ನೀತಿ (CSP) ಭದ್ರತೆಯ ಹೆಚ್ಚುವರಿ ಪದರವಾಗಿದ್ದು, ಇದು ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ (XSS) ಮತ್ತು ಡೇಟಾ ಇಂಜೆಕ್ಷನ್ ದಾಳಿಗಳು ಸೇರಿದಂತೆ ಕೆಲವು ರೀತಿಯ ದಾಳಿಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಮತ್ತು ತಗ್ಗಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. CSP ಅನ್ನು HTTP ಪ್ರತಿಕ್ರಿಯೆ ಹೆಡರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಇದು ಬ್ರೌಸರ್ ನಿರ್ದಿಷ್ಟ ಪುಟಕ್ಕಾಗಿ ಲೋಡ್ ಮಾಡಲು ಅನುಮತಿಸುವ ಸಂಪನ್ಮೂಲಗಳನ್ನು (ಉದಾಹರಣೆಗೆ, ಸ್ಕ್ರಿಪ್ಟ್ಗಳು, ಸ್ಟೈಲ್ಶೀಟ್ಗಳು, ಚಿತ್ರಗಳು, ಫಾಂಟ್ಗಳು, ಫ್ರೇಮ್ಗಳು) ನಿಯಂತ್ರಿಸಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಕಟ್ಟುನಿಟ್ಟಾದ CSP ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಮೂಲಕ, ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ನ ದಾಳಿ ಮೇಲ್ಮೈಯನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಕಡಿಮೆ ಮಾಡಬಹುದು ಮತ್ತು ದಾಳಿಕೋರರಿಗೆ ದುರುದ್ದೇಶಪೂರಿತ ಕೋಡ್ ಅನ್ನು ಸೇರಿಸಲು ಹೆಚ್ಚು ಕಷ್ಟಕರವಾಗಿಸಬಹುದು.
CSP ಬ್ರೌಸರ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ಅನುಮತಿಸಲಾದ ಮೂಲಗಳ ಶ್ವೇತಪಟ್ಟಿ (whitelist) ಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಮೂಲಕ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. CSP ಯಲ್ಲಿ ಸ್ಪಷ್ಟವಾಗಿ ಅನುಮತಿಸದ ಮೂಲದಿಂದ ಲೋಡ್ ಮಾಡಲಾದ ಯಾವುದೇ ಸಂಪನ್ಮೂಲವನ್ನು ಬ್ರೌಸರ್ ನಿರ್ಬಂಧಿಸುತ್ತದೆ. ಇದು ಅನಧಿಕೃತ ಸ್ಕ್ರಿಪ್ಟ್ಗಳ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ತಡೆಯುತ್ತದೆ ಮತ್ತು XSS ದಾಳಿಗಳ ಅಪಾಯವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.
CSP ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ: ನಿರ್ದೇಶನಗಳು ಮತ್ತು ಮೂಲಗಳು
CSP ಅನ್ನು ಹಲವಾರು ನಿರ್ದೇಶನಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗುತ್ತದೆ, ಪ್ರತಿಯೊಂದೂ ನಿರ್ದಿಷ್ಟ ರೀತಿಯ ಸಂಪನ್ಮೂಲಕ್ಕಾಗಿ ನೀತಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ. ಪ್ರತಿ ನಿರ್ದೇಶನವು ಒಂದು ಹೆಸರು ಮತ್ತು ಅನುಮತಿಸಲಾದ ಮೂಲಗಳ ಪಟ್ಟಿಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ ಕೆಲವು CSP ನಿರ್ದೇಶನಗಳು ಇಲ್ಲಿವೆ:
- `default-src`: ಇತರ ಸಂಪನ್ಮೂಲ-ನಿರ್ದಿಷ್ಟ ನಿರ್ದೇಶನಗಳು ಇಲ್ಲದಿದ್ದರೆ ಸಂಪನ್ಮೂಲಗಳನ್ನು ತರಲು ಡೀಫಾಲ್ಟ್ ನೀತಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.
- `script-src`: ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಕೋಡ್ಗೆ ಅನುಮತಿಸಲಾದ ಮೂಲಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.
- `style-src`: ಸ್ಟೈಲ್ಶೀಟ್ಗಳಿಗೆ (CSS) ಅನುಮತಿಸಲಾದ ಮೂಲಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.
- `img-src`: ಚಿತ್ರಗಳಿಗೆ ಅನುಮತಿಸಲಾದ ಮೂಲಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.
- `font-src`: ಫಾಂಟ್ಗಳಿಗೆ ಅನುಮತಿಸಲಾದ ಮೂಲಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.
- `connect-src`: ನೆಟ್ವರ್ಕ್ ವಿನಂತಿಗಳನ್ನು (ಉದಾಹರಣೆಗೆ, AJAX, WebSockets) ಮಾಡಲು ಅನುಮತಿಸಲಾದ ಮೂಲಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.
- `media-src`: ವೀಡಿಯೊ ಮತ್ತು ಆಡಿಯೊ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ಅನುಮತಿಸಲಾದ ಮೂಲಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.
- `object-src`: ಫ್ಲ್ಯಾಶ್ನಂತಹ ಪ್ಲಗಿನ್ಗಳಿಗೆ ಅನುಮತಿಸಲಾದ ಮೂಲಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.
- `frame-src`: ಫ್ರೇಮ್ಗಳನ್ನು (iframes) ಎಂಬೆಡ್ ಮಾಡಲು ಅನುಮತಿಸಲಾದ ಮೂಲಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.
- `base-uri`: ಡಾಕ್ಯುಮೆಂಟ್ನ <base> ಅಂಶದಲ್ಲಿ ಬಳಸಬಹುದಾದ URL ಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ.
- `form-action`: ಫಾರ್ಮ್ಗಳನ್ನು ಸಲ್ಲಿಸಬಹುದಾದ URL ಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ.
- `upgrade-insecure-requests`: ಸುರಕ್ಷಿತವಲ್ಲದ (HTTP) ವಿನಂತಿಗಳನ್ನು ಸುರಕ್ಷಿತ (HTTPS) ವಿನಂತಿಗಳಿಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನವೀಕರಿಸಲು ಬ್ರೌಸರ್ಗಳಿಗೆ ಸೂಚಿಸುತ್ತದೆ.
- `block-all-mixed-content`: ಪುಟವನ್ನು HTTPS ಮೂಲಕ ಲೋಡ್ ಮಾಡಿದಾಗ HTTP ಬಳಸಿಕೊಂಡು ಯಾವುದೇ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಲೋಡ್ ಮಾಡುವುದನ್ನು ಬ್ರೌಸರ್ ತಡೆಯುತ್ತದೆ.
- `report-uri`: ಬ್ರೌಸರ್ CSP ಉಲ್ಲಂಘನೆಗಳ ವರದಿಗಳನ್ನು ಕಳುಹಿಸಬೇಕಾದ URL ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ. `report-to` ಪರವಾಗಿ ಅಳಿಸಲಾಗಿದೆ.
- `report-to`: ಬ್ರೌಸರ್ CSP ಉಲ್ಲಂಘನೆಗಳ ವರದಿಗಳನ್ನು ಕಳುಹಿಸಬೇಕಾದ ಹೆಸರಿನ ಎಂಡ್ಪಾಯಿಂಟ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.
ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ ಮೂಲ ಮೌಲ್ಯಗಳು ಹೀಗಿವೆ:
- `*`: ಯಾವುದೇ ಮೂಲದಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ (ಉತ್ಪಾದನಾ ಪರಿಸರಕ್ಕೆ ಶಿಫಾರಸು ಮಾಡಲಾಗುವುದಿಲ್ಲ).
- `'self'`: ಸಂರಕ್ಷಿತ ಡಾಕ್ಯುಮೆಂಟ್ನಂತೆಯೇ ಅದೇ ಮೂಲದಿಂದ (ಯೋಜನೆ, ಹೋಸ್ಟ್ ಮತ್ತು ಪೋರ್ಟ್) ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
- `'none'`: ಯಾವುದೇ ಮೂಲದಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಲೋಡ್ ಮಾಡುವುದನ್ನು ನಿಷೇಧಿಸುತ್ತದೆ.
- `data:`: `data:` ಯೋಜನೆಯ ಮೂಲಕ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ಇನ್ಲೈನ್ ಚಿತ್ರಗಳು).
- `'unsafe-inline'`: ಇನ್ಲೈನ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಮತ್ತು CSS ಬಳಕೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ (ತೀವ್ರವಾಗಿ ನಿರುತ್ಸಾಹಗೊಳಿಸಲಾಗಿದೆ).
- `'unsafe-eval'`: `eval()` ಮತ್ತು ಅಂತಹುದೇ ಕಾರ್ಯಗಳ ಬಳಕೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ (ತೀವ್ರವಾಗಿ ನಿರುತ್ಸಾಹಗೊಳಿಸಲಾಗಿದೆ).
- `'strict-dynamic'`: ಮಾರ್ಕಪ್ನಲ್ಲಿ ಇರುವ ಸ್ಕ್ರಿಪ್ಟ್ಗೆ ಸ್ಪಷ್ಟವಾಗಿ ನೀಡಿದ ವಿಶ್ವಾಸವನ್ನು, ಅದಕ್ಕೆ ನಾಂಸ್ (nonce) ಅಥವಾ ಹ್ಯಾಶ್ನೊಂದಿಗೆ ಸೇರಿಸುವ ಮೂಲಕ, ಆ ಮೂಲ ಸ್ಕ್ರಿಪ್ಟ್ನಿಂದ ಲೋಡ್ ಮಾಡಲಾದ ಎಲ್ಲಾ ಸ್ಕ್ರಿಪ್ಟ್ಗಳಿಗೆ ಹರಡಲಾಗುವುದು ಎಂದು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.
- `'nonce-
'` : ಹೊಂದಾಣಿಕೆಯ ನಾಂಸ್ (nonce) ಗುಣಲಕ್ಷಣವನ್ನು ಹೊಂದಿರುವ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಅಥವಾ ಶೈಲಿಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ. - `'sha256-
'`, `'sha384- : ಹೊಂದಾಣಿಕೆಯ SHA ಹ್ಯಾಶ್ ಹೊಂದಿರುವ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಅಥವಾ ಶೈಲಿಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.'`, `'sha512- '` - `https://example.com`: ನಿರ್ದಿಷ್ಟ ಡೊಮೇನ್ನಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
CSP ಅನುಷ್ಠಾನ
CSP ಅನ್ನು ಎರಡು ಪ್ರಾಥಮಿಕ ವಿಧಾನಗಳಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು:
- HTTP ಹೆಡರ್: ನಿಮ್ಮ ವೆಬ್ ಸರ್ವರ್ ಅನ್ನು `Content-Security-Policy` HTTP ಪ್ರತಿಕ್ರಿಯೆ ಹೆಡರ್ ಅನ್ನು ಕಳುಹಿಸಲು ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು ಆದ್ಯತೆಯ ವಿಧಾನವಾಗಿದೆ. ಇದು ನಿಮ್ಮ ವೆಬ್ಸೈಟ್ನಲ್ಲಿನ ಪ್ರತಿ ಪುಟ ಅಥವಾ ಸಂಪನ್ಮೂಲಕ್ಕಾಗಿ CSP ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
- <meta> ಟ್ಯಾಗ್: ನಿಮ್ಮ HTML ಡಾಕ್ಯುಮೆಂಟ್ನ <head> ವಿಭಾಗದಲ್ಲಿ <meta> ಟ್ಯಾಗ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು CSP ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು. ಆದಾಗ್ಯೂ, ಈ ವಿಧಾನವು HTTP ಹೆಡರ್ ಅನ್ನು ಬಳಸುವುದಕ್ಕಿಂತ ಕಡಿಮೆ ಹೊಂದಿಕೊಳ್ಳುವ ಮತ್ತು ಮಿತಿಗಳನ್ನು ಹೊಂದಿದೆ. ಉದಾಹರಣೆಗೆ, `frame-ancestors`, `sandbox`, ಮತ್ತು `report-uri` ನಿರ್ದೇಶನಗಳನ್ನು HTML ಮೆಟಾ ಟ್ಯಾಗ್ಗಳಲ್ಲಿ ಬಳಸಲಾಗುವುದಿಲ್ಲ.
HTTP ಹೆಡರ್ ಬಳಸಿ
HTTP ಹೆಡರ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು CSP ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು, ನಿಮ್ಮ ವೆಬ್ ಸರ್ವರ್ ಅನ್ನು ಅದರ ಪ್ರತಿಕ್ರಿಯೆಗಳಲ್ಲಿ `Content-Security-Policy` ಹೆಡರ್ ಅನ್ನು ಸೇರಿಸಲು ನೀವು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ನೀವು ಬಳಸುತ್ತಿರುವ ವೆಬ್ ಸರ್ವರ್ ಅನ್ನು ಅವಲಂಬಿಸಿ ನಿರ್ದಿಷ್ಟ ಕಾನ್ಫಿಗರೇಶನ್ ಹಂತಗಳು ಬದಲಾಗುತ್ತವೆ.
ಸಾಮಾನ್ಯ ವೆಬ್ ಸರ್ವರ್ಗಳಿಗಾಗಿ ಉದಾಹರಣೆಗಳು ಇಲ್ಲಿವೆ:
- Apache: ನಿಮ್ಮ `.htaccess` ಫೈಲ್ ಅಥವಾ ವರ್ಚುವಲ್ ಹೋಸ್ಟ್ ಕಾನ್ಫಿಗರೇಶನ್ಗೆ ಈ ಕೆಳಗಿನ ಸಾಲನ್ನು ಸೇರಿಸಿ:
Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com; img-src 'self' data:;"
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com; img-src 'self' data:;";
app.use(function(req, res, next) {
res.setHeader("Content-Security-Policy", "default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com; img-src 'self' data:;");
next();
});
<meta> ಟ್ಯಾಗ್ ಬಳಸಿ
<meta> ಟ್ಯಾಗ್ ಬಳಸಿ CSP ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು, ನಿಮ್ಮ HTML ಡಾಕ್ಯುಮೆಂಟ್ನ <head> ವಿಭಾಗಕ್ಕೆ ಈ ಕೆಳಗಿನ ಟ್ಯಾಗ್ ಅನ್ನು ಸೇರಿಸಿ:
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com; img-src 'self' data:;">
ಪ್ರಮುಖ ಪರಿಗಣನೆಗಳು:
- `http-equiv` ಗುಣಲಕ್ಷಣವನ್ನು "Content-Security-Policy" ಎಂದು ಹೊಂದಿಸಬೇಕು.
- `content` ಗುಣಲಕ್ಷಣವು CSP ನಿರ್ದೇಶನಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.
- ಹಿಂದೆ ತಿಳಿಸಿದಂತೆ <meta> ಟ್ಯಾಗ್ಗಳನ್ನು ಬಳಸುವ ಮಿತಿಗಳನ್ನು ನೆನಪಿಡಿ.
CSP ಉದಾಹರಣೆಗಳು
ವಿವರಣೆಗಳೊಂದಿಗೆ ಹಲವಾರು CSP ಉದಾಹರಣೆಗಳು ಇಲ್ಲಿವೆ:
- ಮೂಲ CSP:
- ನಿರ್ದಿಷ್ಟ ಡೊಮೇನ್ನಿಂದ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಅನುಮತಿಸುವುದು:
- CDN ನಿಂದ ಶೈಲಿಗಳನ್ನು ಅನುಮತಿಸುವುದು:
- ಯಾವುದೇ ಮೂಲದಿಂದ ಚಿತ್ರಗಳನ್ನು ಅನುಮತಿಸುವುದು:
- CSP ಉಲ್ಲಂಘನೆಗಳನ್ನು ವರದಿ ಮಾಡುವುದು:
- ಹೊಂದಾಣಿಕೆಗಾಗಿ `report-to` ಮತ್ತು `report-uri` ಒಟ್ಟಿಗೆ ಬಳಸುವುದು:
- ಇನ್ಲೈನ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳಿಗಾಗಿ Nonce ಗಳನ್ನು ಬಳಸುವುದು:
Content-Security-Policy: default-src 'self';
ಈ ನೀತಿಯು ಸಂಪನ್ಮೂಲಗಳನ್ನು ಒಂದೇ ಮೂಲದಿಂದ ಮಾತ್ರ ಅನುಮತಿಸುತ್ತದೆ.
Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com;
ಈ ನೀತಿಯು ಒಂದೇ ಮೂಲದಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಮತ್ತು `https://example.com` ನಿಂದ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
Content-Security-Policy: default-src 'self'; style-src 'self' https://cdn.example.com;
ಈ ನೀತಿಯು ಒಂದೇ ಮೂಲದಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಮತ್ತು `https://cdn.example.com` ನಿಂದ ಶೈಲಿಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
Content-Security-Policy: default-src 'self'; img-src *;
ಈ ನೀತಿಯು ಒಂದೇ ಮೂಲದಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಮತ್ತು ಯಾವುದೇ ಮೂಲದಿಂದ ಚಿತ್ರಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ (ಉತ್ಪಾದನೆಗೆ ಶಿಫಾರಸು ಮಾಡಲಾಗುವುದಿಲ್ಲ).
Content-Security-Policy: default-src 'self'; report-uri /csp-report-endpoint;
ಈ ನೀತಿಯು ಒಂದೇ ಮೂಲದಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ ಮತ್ತು `/csp-report-endpoint` ಗೆ ಉಲ್ಲಂಘನೆ ವರದಿಗಳನ್ನು ಕಳುಹಿಸುತ್ತದೆ. `report-to` ಬದಲಿಗೆ `report-uri` ಬಳಸಲು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ.
Content-Security-Policy: default-src 'self'; report-uri /csp-report-endpoint; report-to csp-endpoint;
Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report-endpoint; report-to csp-endpoint;
Report-To: {"group":"csp-endpoint","max_age":10886400,"endpoints":[{"url":"/csp-report-endpoint"}]}
ಈ ಉದಾಹರಣೆಯು `report-uri` (ಹಳೆಯ ಬ್ರೌಸರ್ಗಳಿಗಾಗಿ) ಮತ್ತು `report-to` ಎಂಡ್ಪಾಯಿಂಟ್ ಎರಡನ್ನೂ ಹೊಂದಿಸುವುದನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ, ಜೊತೆಗೆ `Report-To` ಹೆಡರ್ ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುತ್ತದೆ. ನಿಮ್ಮ ಸರ್ವರ್ `Report-To` ಹೆಡರ್ ಅನ್ನು ಸರಿಯಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ, `group`, `max_age`, ಮತ್ತು `endpoints` ಗಳನ್ನು ಸರಿಯಾಗಿ ಹೊಂದಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-rAnd0mN0nc3Str1nG';
ಈ ನೀತಿಯು ಒಂದೇ ಮೂಲದಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಮತ್ತು ಹೊಂದಾಣಿಕೆಯ ನಾಂಸ್ (nonce) ಗುಣಲಕ್ಷಣವನ್ನು ಹೊಂದಿರುವ ಇನ್ಲೈನ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
<script nonce="rAnd0mN0nc3Str1nG">
// Your inline script code here
</script>
ವರದಿ-ಮಾತ್ರ ಕ್ರಮದಲ್ಲಿ CSP
CSP ಅನ್ನು ಎರಡು ವಿಧಾನಗಳಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು:
- ಜಾರಿಗೊಳಿಸುವಿಕೆ ಮೋಡ್: ಬ್ರೌಸರ್ CSP ಅನ್ನು ಉಲ್ಲಂಘಿಸುವ ಸಂಪನ್ಮೂಲಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ.
- ವರದಿ-ಮಾತ್ರ ಮೋಡ್: ಬ್ರೌಸರ್ ಯಾವುದೇ ಸಂಪನ್ಮೂಲಗಳನ್ನು ನಿರ್ಬಂಧಿಸದೆ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಎಂಡ್ಪಾಯಿಂಟ್ಗೆ CSP ಉಲ್ಲಂಘನೆಗಳನ್ನು ವರದಿ ಮಾಡುತ್ತದೆ.
ವರದಿ-ಮಾತ್ರ ಮೋಡ್ ಅನ್ನು ಜಾರಿಗೊಳಿಸುವ ಮೊದಲು ನಿಮ್ಮ CSP ಅನ್ನು ಪರೀಕ್ಷಿಸಲು ಮತ್ತು ಪರಿಷ್ಕರಿಸಲು ಉಪಯುಕ್ತವಾಗಿದೆ. ವರದಿ-ಮಾತ್ರ ಮೋಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು, `Content-Security-Policy` ಹೆಡರ್ ಬದಲಿಗೆ `Content-Security-Policy-Report-Only` HTTP ಹೆಡರ್ ಅನ್ನು ಬಳಸಿ.
ಉದಾಹರಣೆ:
Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report-endpoint;
ಈ ಕಾನ್ಫಿಗರೇಶನ್ ಯಾವುದೇ ಸಂಪನ್ಮೂಲಗಳನ್ನು ನಿರ್ಬಂಧಿಸದೆ `/csp-report-endpoint` ಗೆ ವರದಿಗಳನ್ನು ಕಳುಹಿಸುತ್ತದೆ.
CSP ಅನುಷ್ಠಾನಕ್ಕೆ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು
CSP ಅನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಕೆಲವು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು ಇಲ್ಲಿವೆ:
- ಕಟ್ಟುನಿಟ್ಟಾದ ನೀತಿಯೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ: ಒಂದೇ ಮೂಲದಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಮಾತ್ರ ಅನುಮತಿಸುವ ನಿರ್ಬಂಧಿತ ನೀತಿಯೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಅಗತ್ಯವಿರುವಂತೆ ಕ್ರಮೇಣ ಅದನ್ನು ಸಡಿಲಗೊಳಿಸಿ.
- ಇನ್ಲೈನ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಮತ್ತು ಶೈಲಿಗಳಿಗಾಗಿ Nonce ಗಳು ಅಥವಾ Hashes ಗಳನ್ನು ಬಳಸಿ: `'unsafe-inline'` ಬಳಸುವುದನ್ನು ತಪ್ಪಿಸಿ ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಇನ್ಲೈನ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಮತ್ತು ಶೈಲಿಗಳನ್ನು ಅನುಮತಿಸಲು nonce ಗಳು ಅಥವಾ hashes ಗಳನ್ನು ಬಳಸಿ.
- `'unsafe-eval'` ಅನ್ನು ತಪ್ಪಿಸಿ: ಸಾಧ್ಯವಾದರೆ, `'unsafe-eval'` ಬಳಸುವುದನ್ನು ತಪ್ಪಿಸಿ ಏಕೆಂದರೆ ಅದು ಭದ್ರತಾ ಅಪಾಯಗಳನ್ನು ಪರಿಚಯಿಸಬಹುದು. ಡೈನಾಮಿಕ್ ಕೋಡ್ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಪರ್ಯಾಯ ವಿಧಾನಗಳನ್ನು ಪರಿಗಣಿಸಿ.
- HTTPS ಬಳಸಿ: ಮ್ಯಾನ್-ಇನ್-ದಿ-ಮಿಡಲ್ (man-in-the-middle) ದಾಳಿಗಳನ್ನು ತಡೆಯಲು ಎಲ್ಲಾ ಸಂಪನ್ಮೂಲಗಳನ್ನು HTTPS ಮೂಲಕ ಲೋಡ್ ಮಾಡಲಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಸುರಕ್ಷಿತವಲ್ಲದ ವಿನಂತಿಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನವೀಕರಿಸಲು `upgrade-insecure-requests` ನಿರ್ದೇಶನವನ್ನು ಬಳಸಿ.
- CSP ಉಲ್ಲಂಘನೆಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಿ: CSP ಉಲ್ಲಂಘನೆಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ಮತ್ತು ಸಂಭಾವ್ಯ ಭದ್ರತಾ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸಲು ವರದಿ ಮಾಡುವ ಎಂಡ್ಪಾಯಿಂಟ್ ಅನ್ನು ಹೊಂದಿಸಿ.
- ನಿಮ್ಮ CSP ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಪರೀಕ್ಷಿಸಿ: ನಿಮ್ಮ CSP ನಿರೀಕ್ಷೆಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಅದನ್ನು ವಿವಿಧ ಬ್ರೌಸರ್ಗಳು ಮತ್ತು ಪರಿಸರಗಳಲ್ಲಿ ಪರೀಕ್ಷಿಸಿ.
- ಪುನರಾವರ್ತಿಸಿ ಮತ್ತು ಪರಿಷ್ಕರಿಸಿ: CSP ಅನುಷ್ಠಾನವು ಪುನರಾವರ್ತಿತ ಪ್ರಕ್ರಿಯೆಯಾಗಿದೆ. ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ವಿಕಸನಗೊಂಡಂತೆ ನಿಮ್ಮ CSP ಅನ್ನು ನಿರಂತರವಾಗಿ ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಿ ಮತ್ತು ಪರಿಷ್ಕರಿಸಿ.
- `strict-dynamic` ನಿರ್ದೇಶನವನ್ನು ಪರಿಗಣಿಸಿ: ವಿಶ್ವಾಸಾರ್ಹ ಸ್ಕ್ರಿಪ್ಟ್ಗಳಿಂದ ಲೋಡ್ ಮಾಡಲಾದ ಸ್ಕ್ರಿಪ್ಟ್ಗಳಿಗೆ ವಿಶ್ವಾಸವನ್ನು ಹರಡುವ ಮೂಲಕ ನಿಮ್ಮ CSP ಯ ಸಂಕೀರ್ಣತೆಯನ್ನು ಕಡಿಮೆ ಮಾಡಲು `strict-dynamic` ಅನ್ನು ಬಳಸಿ.
CSP ಗಾಗಿ ಪರಿಕರಗಳು
CSP ಅನ್ನು ರಚಿಸಲು, ಪರೀಕ್ಷಿಸಲು ಮತ್ತು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ಹಲವಾರು ಪರಿಕರಗಳು ನಿಮಗೆ ಸಹಾಯ ಮಾಡಬಹುದು:
- CSP ಜನರೇಟರ್ಗಳು: ನಿಮ್ಮ ವೆಬ್ಸೈಟ್ನ ಸಂಪನ್ಮೂಲಗಳ ಆಧಾರದ ಮೇಲೆ CSP ನಿರ್ದೇಶನಗಳನ್ನು ರಚಿಸುವ ಆನ್ಲೈನ್ ಪರಿಕರಗಳು.
- ಬ್ರೌಸರ್ ಡೆವಲಪರ್ ಪರಿಕರಗಳು: ಹೆಚ್ಚಿನ ಆಧುನಿಕ ಬ್ರೌಸರ್ಗಳು CSP ಉಲ್ಲಂಘನೆಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಲು ಸಹಾಯ ಮಾಡುವ ಡೆವಲಪರ್ ಪರಿಕರಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ.
- CSP ಮೇಲ್ವಿಚಾರಣಾ ಸೇವೆಗಳು: CSP ಉಲ್ಲಂಘನೆ ವರದಿಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಮತ್ತು ವಿಶ್ಲೇಷಿಸುವ ಸೇವೆಗಳು.
CSP ಮತ್ತು ಫ್ರೇಮ್ವರ್ಕ್ಗಳು/ಲೈಬ್ರರಿಗಳು
ಫ್ರೇಮ್ವರ್ಕ್ಗಳು ಮತ್ತು ಲೈಬ್ರರಿಗಳನ್ನು ಬಳಸುವಾಗ, ಹೊಂದಾಣಿಕೆಯನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಮತ್ತು ಭದ್ರತಾ ಸಮಸ್ಯೆಗಳನ್ನು ತಡೆಯಲು CSP ಅನ್ನು ಸರಿಯಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು ಮುಖ್ಯ. ಕೆಲವು ಪರಿಗಣನೆಗಳು ಇಲ್ಲಿವೆ:
- ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಫ್ರೇಮ್ವರ್ಕ್ಗಳು (ಉದಾಹರಣೆಗೆ, React, Angular, Vue.js): ಈ ಫ್ರೇಮ್ವರ್ಕ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಇನ್ಲೈನ್ ಶೈಲಿಗಳು ಅಥವಾ ಡೈನಾಮಿಕ್ ಕೋಡ್ ಉತ್ಪಾದನೆಯನ್ನು ಬಳಸುತ್ತವೆ, ಇದಕ್ಕೆ ವಿಶೇಷ CSP ಕಾನ್ಫಿಗರೇಶನ್ಗಳು ಬೇಕಾಗಬಹುದು (ಉದಾಹರಣೆಗೆ, nonce ಗಳು, hashes, `'unsafe-eval'`).
- CSS ಫ್ರೇಮ್ವರ್ಕ್ಗಳು (ಉದಾಹರಣೆಗೆ, Bootstrap, Tailwind CSS): ಈ ಫ್ರೇಮ್ವರ್ಕ್ಗಳು ಇನ್ಲೈನ್ ಶೈಲಿಗಳು ಅಥವಾ ಬಾಹ್ಯ ಸ್ಟೈಲ್ಶೀಟ್ಗಳನ್ನು ಬಳಸಬಹುದು, ಇವುಗಳನ್ನು ನಿಮ್ಮ CSP ಯಲ್ಲಿ ಅನುಮತಿಸಬೇಕಾಗುತ್ತದೆ.
- ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಲೈಬ್ರರಿಗಳು: ನೀವು ಬಳಸುವ ಯಾವುದೇ ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಲೈಬ್ರರಿಗಳು ನಿಮ್ಮ CSP ಯೊಂದಿಗೆ ಹೊಂದಾಣಿಕೆಯಾಗುತ್ತವೆ ಮತ್ತು ಭದ್ರತಾ ದುರ್ಬಲತೆಗಳನ್ನು ಪರಿಚಯಿಸುವುದಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
CSP ಮತ್ತು CDN ಗಳು (ವಿಷಯ ವಿತರಣಾ ಜಾಲಗಳು)
CDN ಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಫೈಲ್ಗಳು, CSS ಸ್ಟೈಲ್ಶೀಟ್ಗಳು ಮತ್ತು ಚಿತ್ರಗಳಂತಹ ಸ್ಥಿರ ಆಸ್ತಿಗಳನ್ನು ಹೋಸ್ಟ್ ಮಾಡಲು ಬಳಸಲಾಗುತ್ತದೆ. ನಿಮ್ಮ CSP ಯಲ್ಲಿ CDN ಗಳಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅನುಮತಿಸಲು, ನೀವು CDN ಡೊಮೇನ್ಗಳನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಶ್ವೇತಪಟ್ಟಿಯಲ್ಲಿ ಸೇರಿಸಬೇಕು.
ಉದಾಹರಣೆ:
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; style-src 'self' https://cdnjs.cloudflare.com;
ಈ ನೀತಿಯು jsDelivr ನಿಂದ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಮತ್ತು Cloudflare ನ cdnjs ನಿಂದ ಶೈಲಿಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
ಸಾಮಾನ್ಯ CSP ತಪ್ಪುಗಳನ್ನು ತಪ್ಪಿಸುವುದು
ತಪ್ಪಿಸಬೇಕಾದ ಕೆಲವು ಸಾಮಾನ್ಯ CSP ತಪ್ಪುಗಳು ಇಲ್ಲಿವೆ:
- `*` ಅನ್ನು ಮೂಲವಾಗಿ ಬಳಸುವುದು: ಯಾವುದೇ ಮೂಲದಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅನುಮತಿಸುವುದು CSP ಯ ಪ್ರಯೋಜನಗಳನ್ನು ನಿರಾಕರಿಸಬಹುದು.
- `'unsafe-inline'` ಮತ್ತು `'unsafe-eval'` ಅನ್ನು ಸಮರ್ಥನೆ ಇಲ್ಲದೆ ಬಳಸುವುದು: ಈ ನಿರ್ದೇಶನಗಳು ಭದ್ರತಾ ಅಪಾಯಗಳನ್ನು ಪರಿಚಯಿಸಬಹುದು ಮತ್ತು ಸಾಧ್ಯವಾದರೆ ತಪ್ಪಿಸಬೇಕು.
- CSP ಉಲ್ಲಂಘನೆಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡದಿರುವುದು: CSP ಉಲ್ಲಂಘನೆಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ವಿಫಲವಾಗುವುದರಿಂದ ಭದ್ರತಾ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸಲು ಮತ್ತು ಪರಿಹರಿಸಲು ನಿಮ್ಮನ್ನು ತಡೆಯಬಹುದು.
- CSP ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಪರೀಕ್ಷಿಸದಿರುವುದು: ಅಸಮರ್ಪಕ ಪರೀಕ್ಷೆಯು ಅನಿರೀಕ್ಷಿತ ನಡವಳಿಕೆ ಮತ್ತು ಭದ್ರತಾ ದುರ್ಬಲತೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು.
- Nonces ಮತ್ತು Hashes ಗಳನ್ನು ತಪ್ಪಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು: ತಪ್ಪಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ nonces ಮತ್ತು hashes ಗಳು ಕಾನೂನುಬದ್ಧ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಮತ್ತು ಶೈಲಿಗಳನ್ನು ಲೋಡ್ ಮಾಡುವುದನ್ನು ತಡೆಯಬಹುದು.
ಸುಧಾರಿತ CSP ಪರಿಕಲ್ಪನೆಗಳು
ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ಮೀರಿ, ಹಲವಾರು ಸುಧಾರಿತ CSP ಪರಿಕಲ್ಪನೆಗಳು ನಿಮ್ಮ ವೆಬ್ ಭದ್ರತೆಯನ್ನು ಮತ್ತಷ್ಟು ಹೆಚ್ಚಿಸಬಹುದು:
- `frame-ancestors` ನಿರ್ದೇಶನ: ನಿಮ್ಮ ಪುಟದಲ್ಲಿ ಫ್ರೇಮ್ (iframe) ಅನ್ನು ಎಂಬೆಡ್ ಮಾಡಲು ಅನುಮತಿಸಲಾದ ಪೋಷಕರನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ. ಕ್ಲಿಕ್ಜಾಕಿಂಗ್ (clickjacking) ದಾಳಿಗಳಿಂದ ರಕ್ಷಿಸುತ್ತದೆ.
- `sandbox` ನಿರ್ದೇಶನ: ವಿನಂತಿಸಿದ ಸಂಪನ್ಮೂಲಕ್ಕಾಗಿ ಸ್ಯಾಂಡ್ಬಾಕ್ಸ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ, ಅದರ ಸಾಮರ್ಥ್ಯಗಳ ಮೇಲೆ ನಿರ್ಬಂಧಗಳನ್ನು ಅನ್ವಯಿಸುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ಸ್ಕ್ರಿಪ್ಟ್ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ತಡೆಯುವುದು, ಫಾರ್ಮ್ ಸಲ್ಲಿಕೆ).
- `require-sri-for` ನಿರ್ದೇಶನ: ಬಾಹ್ಯ ಮೂಲಗಳಿಂದ ಲೋಡ್ ಮಾಡಲಾದ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಅಥವಾ ಶೈಲಿಗಳಿಗಾಗಿ ಸಬ್ರಿಸೋರ್ಸ್ ಇಂಟೆಗ್ರಿಟಿ (SRI) ಅಗತ್ಯವಿದೆ. SRI ಫೈಲ್ಗಳನ್ನು ತಿರುಚಲಾಗಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
- ಟ್ರಸ್ಟೆಡ್ ಟೈಪ್ಸ್ API: DOM ಸಿಂಕ್ಗಳಲ್ಲಿ ಟೈಪ್ ಸುರಕ್ಷತೆಯನ್ನು ಜಾರಿಗೊಳಿಸುವ ಮೂಲಕ DOM-ಆಧಾರಿತ XSS ಅನ್ನು ತಡೆಯಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
CSP ಭವಿಷ್ಯ
ಹೊಸ ಭದ್ರತಾ ಸವಾಲುಗಳನ್ನು ಎದುರಿಸಲು CSP ನಿರಂತರವಾಗಿ ವಿಕಸನಗೊಳ್ಳುತ್ತಿದೆ. ಭವಿಷ್ಯದ ಬೆಳವಣಿಗೆಗಳು ಹೀಗಿರಬಹುದು:
- ಸುಧಾರಿತ ಬ್ರೌಸರ್ ಬೆಂಬಲ: CSP ವೈಶಿಷ್ಟ್ಯಗಳಿಗಾಗಿ ಬ್ರೌಸರ್ ಬೆಂಬಲದಲ್ಲಿ ನಿರಂತರ ಸುಧಾರಣೆಗಳು.
- ಹೊಸ ನಿರ್ದೇಶನಗಳು ಮತ್ತು ವೈಶಿಷ್ಟ್ಯಗಳು: ಉದಯೋನ್ಮುಖ ಭದ್ರತಾ ಬೆದರಿಕೆಗಳನ್ನು ಎದುರಿಸಲು ಹೊಸ ನಿರ್ದೇಶನಗಳು ಮತ್ತು ವೈಶಿಷ್ಟ್ಯಗಳ ಪರಿಚಯ.
- ಭದ್ರತಾ ಪರಿಕರಗಳೊಂದಿಗೆ ಏಕೀಕರಣ: CSP ನಿರ್ವಹಣೆ ಮತ್ತು ಮೇಲ್ವಿಚಾರಣೆಯನ್ನು ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸಲು ಭದ್ರತಾ ಪರಿಕರಗಳು ಮತ್ತು ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳೊಂದಿಗೆ ಆಳವಾದ ಏಕೀಕರಣ.
ತೀರ್ಮಾನ
ವಿಷಯ ಭದ್ರತಾ ನೀತಿ (CSP) XSS ದಾಳಿಗಳನ್ನು ತಗ್ಗಿಸಲು ಮತ್ತು ವೆಬ್ ಭದ್ರತೆಯನ್ನು ಹೆಚ್ಚಿಸಲು ಒಂದು ಶಕ್ತಿಶಾಲಿ ಸಾಧನವಾಗಿದೆ. ಕಟ್ಟುನಿಟ್ಟಾದ CSP ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಮೂಲಕ, ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ನ ದಾಳಿ ಮೇಲ್ಮೈಯನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಕಡಿಮೆ ಮಾಡಬಹುದು ಮತ್ತು ನಿಮ್ಮ ಬಳಕೆದಾರರನ್ನು ದುರುದ್ದೇಶಪೂರಿತ ಕೋಡ್ನಿಂದ ರಕ್ಷಿಸಬಹುದು. CSP ಅನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಎಚ್ಚರಿಕೆಯ ಯೋಜನೆ, ಸಂಪೂರ್ಣ ಪರೀಕ್ಷೆ ಮತ್ತು ನಿರಂತರ ಮೇಲ್ವಿಚಾರಣೆ ಅಗತ್ಯವಿದೆ. ಈ ಮಾರ್ಗದರ್ಶಿಯಲ್ಲಿ ವಿವರಿಸಿದ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಅನುಸರಿಸುವ ಮೂಲಕ, ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳ ಭದ್ರತಾ ನಿಲುವನ್ನು ಸುಧಾರಿಸಲು ಮತ್ತು ಜಾಗತಿಕ ಡಿಜಿಟಲ್ ಪರಿಸರ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ ನಿಮ್ಮ ಆನ್ಲೈನ್ ಅಸ್ತಿತ್ವವನ್ನು ರಕ್ಷಿಸಲು ನೀವು CSP ಅನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು.
ವಿಕಸನಗೊಳ್ಳುತ್ತಿರುವ ಭದ್ರತಾ ಬೆದರಿಕೆಗಳಿಗೆ ಹೊಂದಿಕೊಳ್ಳಲು ಮತ್ತು ನಿಮ್ಮ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಸಂರಕ್ಷಿತವಾಗಿವೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ನಿಮ್ಮ CSP ಅನ್ನು ನಿಯಮಿತವಾಗಿ ಪರಿಶೀಲಿಸಲು ಮತ್ತು ನವೀಕರಿಸಲು ಮರೆಯದಿರಿ.