ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ (XSS) ದಾಳಿಗಳನ್ನು ತಡೆಯಲು ಮತ್ತು ದೃಢವಾದ ಫ್ರಂಟ್-ಎಂಡ್ ಭದ್ರತೆಗಾಗಿ ಕಂಟೆಂಟ್ ಸೆಕ್ಯುರಿಟಿ ಪಾಲಿಸಿ (CSP) ಅನ್ನು ಅಳವಡಿಸಲು ಒಂದು ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ.
ಫ್ರಂಟ್-ಎಂಡ್ ಭದ್ರತೆ: ಎಕ್ಸ್ಎಸ್ಎಸ್ ತಡೆಗಟ್ಟುವಿಕೆ ಮತ್ತು ಕಂಟೆಂಟ್ ಸೆಕ್ಯುರಿಟಿ ಪಾಲಿಸಿ (ಸಿಎಸ್ಪಿ)
ಇಂದಿನ ವೆಬ್ ಅಭಿವೃದ್ಧಿ ಕ್ಷೇತ್ರದಲ್ಲಿ, ಫ್ರಂಟ್-ಎಂಡ್ ಭದ್ರತೆ ಅತ್ಯಂತ ಮುಖ್ಯವಾಗಿದೆ. ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಹೆಚ್ಚು ಸಂಕೀರ್ಣ ಮತ್ತು ಸಂವಾದಾತ್ಮಕವಾಗುತ್ತಿದ್ದಂತೆ, ಅವು ವಿವಿಧ ದಾಳಿಗಳಿಗೆ, ವಿಶೇಷವಾಗಿ ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ (XSS) ದಾಳಿಗೆ ಹೆಚ್ಚು ಗುರಿಯಾಗುತ್ತವೆ. ಈ ಲೇಖನವು ಎಕ್ಸ್ಎಸ್ಎಸ್ ದುರ್ಬಲತೆಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಮತ್ತು ತಗ್ಗಿಸಲು, ಹಾಗೂ ದೃಢವಾದ ರಕ್ಷಣಾ ಕಾರ್ಯವಿಧಾನವಾಗಿ ಕಂಟೆಂಟ್ ಸೆಕ್ಯುರಿಟಿ ಪಾಲಿಸಿ (CSP) ಅನ್ನು ಅಳವಡಿಸಲು ಒಂದು ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ.
ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ (XSS) ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು
ಎಕ್ಸ್ಎಸ್ಎಸ್ ಎಂದರೇನು?
ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ (XSS) ಒಂದು ರೀತಿಯ ಇಂಜೆಕ್ಷನ್ ದಾಳಿಯಾಗಿದ್ದು, ಇದರಲ್ಲಿ ದುರುದ್ದೇಶಪೂರಿತ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಸುರಕ್ಷಿತ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹ ವೆಬ್ಸೈಟ್ಗಳಿಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ. ಎಕ್ಸ್ಎಸ್ಎಸ್ ದಾಳಿಗಳು, ಆಕ್ರಮಣಕಾರರು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಬಳಸಿ ದುರುದ್ದೇಶಪೂರಿತ ಕೋಡ್ ಅನ್ನು (ಸಾಮಾನ್ಯವಾಗಿ ಬ್ರೌಸರ್-ಸೈಡ್ ಸ್ಕ್ರಿಪ್ಟ್ ರೂಪದಲ್ಲಿ) ಬೇರೆ ಬಳಕೆದಾರರಿಗೆ ಕಳುಹಿಸಿದಾಗ ಸಂಭವಿಸುತ್ತವೆ. ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಬಳಕೆದಾರರಿಂದ ಪಡೆದ ಇನ್ಪುಟ್ ಅನ್ನು ಮೌಲ್ಯೀಕರಿಸದೆ ಅಥವಾ ಎನ್ಕೋಡ್ ಮಾಡದೆ ಉತ್ಪಾದಿಸುವ ಔಟ್ಪುಟ್ನಲ್ಲಿ ಬಳಸಿಕೊಂಡಾಗ ಇಂತಹ ದಾಳಿಗಳು ಯಶಸ್ವಿಯಾಗುತ್ತವೆ.
ಬಳಕೆದಾರರು ಕಾಮೆಂಟ್ಗಳನ್ನು ಪೋಸ್ಟ್ ಮಾಡಬಹುದಾದ ಜನಪ್ರಿಯ ಆನ್ಲೈನ್ ಫೋರಂ ಅನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ. ಫೋರಂ ಬಳಕೆದಾರರ ಇನ್ಪುಟ್ ಅನ್ನು ಸರಿಯಾಗಿ ಸ್ಯಾನಿಟೈಜ್ ಮಾಡದಿದ್ದರೆ, ಆಕ್ರಮಣಕಾರರು ಕಾಮೆಂಟ್ನಲ್ಲಿ ದುರುದ್ದೇಶಪೂರಿತ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಸ್ನಿಪ್ಪೆಟ್ ಅನ್ನು ಸೇರಿಸಬಹುದು. ಇತರ ಬಳಕೆದಾರರು ಆ ಕಾಮೆಂಟ್ ಅನ್ನು ವೀಕ್ಷಿಸಿದಾಗ, ದುರುದ್ದೇಶಪೂರಿತ ಸ್ಕ್ರಿಪ್ಟ್ ಅವರ ಬ್ರೌಸರ್ಗಳಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ, ಇದರಿಂದ ಅವರ ಕುಕೀಗಳನ್ನು ಕದಿಯಬಹುದು, ಅವರನ್ನು ಫಿಶಿಂಗ್ ಸೈಟ್ಗಳಿಗೆ ಮರುನಿರ್ದೇಶಿಸಬಹುದು ಅಥವಾ ವೆಬ್ಸೈಟ್ ಅನ್ನು ವಿರೂಪಗೊಳಿಸಬಹುದು.
ಎಕ್ಸ್ಎಸ್ಎಸ್ ದಾಳಿಯ ಪ್ರಕಾರಗಳು
- ರಿಫ್ಲೆಕ್ಟೆಡ್ ಎಕ್ಸ್ಎಸ್ಎಸ್ (Reflected XSS): ದುರುದ್ದೇಶಪೂರಿತ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಒಂದೇ ವಿನಂತಿಯಲ್ಲಿ ಸೇರಿಸಲಾಗುತ್ತದೆ. ಸರ್ವರ್ ಎಚ್ಟಿಟಿಪಿ ವಿನಂತಿಯಿಂದ ಇಂಜೆಕ್ಟ್ ಮಾಡಿದ ಡೇಟಾವನ್ನು ಓದುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಬಳಕೆದಾರರಿಗೆ ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಅವರ ಬ್ರೌಸರ್ನಲ್ಲಿ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ದುರುದ್ದೇಶಪೂರಿತ ಲಿಂಕ್ಗಳನ್ನು ಹೊಂದಿರುವ ಫಿಶಿಂಗ್ ಇಮೇಲ್ಗಳ ಮೂಲಕ ಸಾಧಿಸಲಾಗುತ್ತದೆ.
- ಸ್ಟೋರ್ಡ್ ಎಕ್ಸ್ಎಸ್ಎಸ್ (Stored XSS): ದುರುದ್ದೇಶಪೂರಿತ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಗುರಿ ಸರ್ವರ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ಡೇಟಾಬೇಸ್, ಫೋರಂ ಪೋಸ್ಟ್, ಅಥವಾ ಕಾಮೆಂಟ್ ವಿಭಾಗದಲ್ಲಿ). ಇತರ ಬಳಕೆದಾರರು ಸಂಗ್ರಹಿಸಿದ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಿದಾಗ, ಸ್ಕ್ರಿಪ್ಟ್ ಅವರ ಬ್ರೌಸರ್ಗಳಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ. ಈ ರೀತಿಯ ಎಕ್ಸ್ಎಸ್ಎಸ್ ವಿಶೇಷವಾಗಿ ಅಪಾಯಕಾರಿಯಾಗಿದೆ ಏಕೆಂದರೆ ಇದು ಹೆಚ್ಚಿನ ಸಂಖ್ಯೆಯ ಬಳಕೆದಾರರ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರಬಹುದು.
- ಡಾಮ್-ಆಧಾರಿತ ಎಕ್ಸ್ಎಸ್ಎಸ್ (DOM-based XSS): ಈ ದುರ್ಬಲತೆಯು ಕ್ಲೈಂಟ್-ಸೈಡ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಕೋಡ್ನಲ್ಲೇ ಇರುತ್ತದೆ. ದಾಳಿಯು ಬಲಿಪಶುವಿನ ಬ್ರೌಸರ್ನಲ್ಲಿನ ಡಾಮ್ (ಡಾಕ್ಯುಮೆಂಟ್ ಆಬ್ಜೆಕ್ಟ್ ಮಾಡೆಲ್) ಅನ್ನು ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸುತ್ತದೆ, ಇದರಿಂದ ದುರುದ್ದೇಶಪೂರಿತ ಸ್ಕ್ರಿಪ್ಟ್ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ. ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಯುಆರ್ಎಲ್ಗಳು ಅಥವಾ ಇತರ ಕ್ಲೈಂಟ್-ಸೈಡ್ ಡೇಟಾವನ್ನು ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.
ಎಕ್ಸ್ಎಸ್ಎಸ್ನ ಪರಿಣಾಮ
ಯಶಸ್ವಿ ಎಕ್ಸ್ಎಸ್ಎಸ್ ದಾಳಿಯ ಪರಿಣಾಮಗಳು ಗಂಭೀರವಾಗಿರಬಹುದು:
- ಕುಕೀ ಕಳ್ಳತನ: ಆಕ್ರಮಣಕಾರರು ಬಳಕೆದಾರರ ಕುಕೀಗಳನ್ನು ಕದಿಯಬಹುದು, ಅವರ ಖಾತೆಗಳು ಮತ್ತು ಸೂಕ್ಷ್ಮ ಮಾಹಿತಿಗೆ ಪ್ರವೇಶವನ್ನು ಪಡೆಯಬಹುದು.
- ಖಾತೆ ಹೈಜಾಕಿಂಗ್: ಕದ್ದ ಕುಕೀಗಳೊಂದಿಗೆ, ಆಕ್ರಮಣಕಾರರು ಬಳಕೆದಾರರಂತೆ ನಟಿಸಬಹುದು ಮತ್ತು ಅವರ ಪರವಾಗಿ ಕ್ರಮಗಳನ್ನು ನಿರ್ವಹಿಸಬಹುದು.
- ವೆಬ್ಸೈಟ್ ವಿರೂಪಗೊಳಿಸುವಿಕೆ: ಆಕ್ರಮಣಕಾರರು ವೆಬ್ಸೈಟ್ನ ನೋಟವನ್ನು ಬದಲಾಯಿಸಬಹುದು, ತಪ್ಪು ಮಾಹಿತಿಯನ್ನು ಹರಡಬಹುದು ಅಥವಾ ಬ್ರ್ಯಾಂಡ್ನ ಖ್ಯಾತಿಗೆ ಹಾನಿ ಮಾಡಬಹುದು.
- ಫಿಶಿಂಗ್ ಸೈಟ್ಗಳಿಗೆ ಮರುನಿರ್ದೇಶನ: ಬಳಕೆದಾರರನ್ನು ದುರುದ್ದೇಶಪೂರಿತ ವೆಬ್ಸೈಟ್ಗಳಿಗೆ ಮರುನಿರ್ದೇಶಿಸಬಹುದು, ಅದು ಅವರ ಲಾಗಿನ್ ರುಜುವಾತುಗಳನ್ನು ಕದಿಯಬಹುದು ಅಥವಾ ಮಾಲ್ವೇರ್ ಅನ್ನು ಸ್ಥಾಪಿಸಬಹುದು.
- ಡೇಟಾ ಎಕ್ಸ್ಫಿಲ್ಟ್ರೇಶನ್: ಪುಟದಲ್ಲಿ ಪ್ರದರ್ಶಿಸಲಾದ ಸೂಕ್ಷ್ಮ ಡೇಟಾವನ್ನು ಕದ್ದು ಆಕ್ರಮಣಕಾರರ ಸರ್ವರ್ಗೆ ಕಳುಹಿಸಬಹುದು.
ಎಕ್ಸ್ಎಸ್ಎಸ್ ತಡೆಗಟ್ಟುವಿಕೆ ತಂತ್ರಗಳು
ಎಕ್ಸ್ಎಸ್ಎಸ್ ದಾಳಿಗಳನ್ನು ತಡೆಗಟ್ಟಲು ಇನ್ಪುಟ್ ಮೌಲ್ಯೀಕರಣ ಮತ್ತು ಔಟ್ಪುಟ್ ಎನ್ಕೋಡಿಂಗ್ ಎರಡರ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸುವ ಬಹು-ಪದರದ ವಿಧಾನದ ಅಗತ್ಯವಿದೆ.
ಇನ್ಪುಟ್ ಮೌಲ್ಯೀಕರಣ
ಇನ್ಪುಟ್ ಮೌಲ್ಯೀಕರಣವು ಬಳಕೆದಾರರ ಇನ್ಪುಟ್ ನಿರೀಕ್ಷಿತ ಸ್ವರೂಪ ಮತ್ತು ಡೇಟಾ ಪ್ರಕಾರಕ್ಕೆ ಅನುಗುಣವಾಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುವ ಪ್ರಕ್ರಿಯೆಯಾಗಿದೆ. ಇದು ಎಕ್ಸ್ಎಸ್ಎಸ್ ವಿರುದ್ಧ ಸಂಪೂರ್ಣ ರಕ್ಷಣೆ ಅಲ್ಲದಿದ್ದರೂ, ಇದು ದಾಳಿಯ ಮೇಲ್ಮೈಯನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
- ವೈಟ್ಲಿಸ್ಟ್ ಮೌಲ್ಯೀಕರಣ: ಅನುಮತಿಸಲಾದ ಅಕ್ಷರಗಳು ಮತ್ತು ಮಾದರಿಗಳ ಕಟ್ಟುನಿಟ್ಟಾದ ಗುಂಪನ್ನು ವಿವರಿಸಿ. ವೈಟ್ಲಿಸ್ಟ್ಗೆ ಹೊಂದಿಕೆಯಾಗದ ಯಾವುದೇ ಇನ್ಪುಟ್ ಅನ್ನು ತಿರಸ್ಕರಿಸಿ. ಉದಾಹರಣೆಗೆ, ನೀವು ಬಳಕೆದಾರರು ಹೆಸರನ್ನು ನಮೂದಿಸಬೇಕೆಂದು ನಿರೀಕ್ಷಿಸಿದರೆ, ಕೇವಲ ಅಕ್ಷರಗಳು, ಸ್ಪೇಸ್ಗಳು ಮತ್ತು ಬಹುಶಃ ಹೈಫನ್ಗಳನ್ನು ಮಾತ್ರ ಅನುಮತಿಸಿ.
- ಬ್ಲ್ಯಾಕ್ಲಿಸ್ಟ್ ಮೌಲ್ಯೀಕರಣ: ತಿಳಿದಿರುವ ದುರುದ್ದೇಶಪೂರಿತ ಅಕ್ಷರಗಳು ಅಥವಾ ಮಾದರಿಗಳನ್ನು ಗುರುತಿಸಿ ಮತ್ತು ನಿರ್ಬಂಧಿಸಿ. ಆದಾಗ್ಯೂ, ಬ್ಲ್ಯಾಕ್ಲಿಸ್ಟ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಅಪೂರ್ಣವಾಗಿರುತ್ತವೆ ಮತ್ತು ಬುದ್ಧಿವಂತ ಆಕ್ರಮಣಕಾರರಿಂದ ತಪ್ಪಿಸಿಕೊಳ್ಳಬಹುದು. ಬ್ಲ್ಯಾಕ್ಲಿಸ್ಟ್ ಮೌಲ್ಯೀಕರಣಕ್ಕಿಂತ ವೈಟ್ಲಿಸ್ಟ್ ಮೌಲ್ಯೀಕರಣಕ್ಕೆ ಸಾಮಾನ್ಯವಾಗಿ ಆದ್ಯತೆ ನೀಡಲಾಗುತ್ತದೆ.
- ಡೇಟಾ ಪ್ರಕಾರದ ಮೌಲ್ಯೀಕರಣ: ಇನ್ಪುಟ್ ನಿರೀಕ್ಷಿತ ಡೇಟಾ ಪ್ರಕಾರಕ್ಕೆ (ಉದಾ., ಪೂರ್ಣಾಂಕ, ಇಮೇಲ್ ವಿಳಾಸ, ಯುಆರ್ಎಲ್) ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
- ಉದ್ದದ ಮಿತಿಗಳು: ಬಫರ್ ಓವರ್ಫ್ಲೋ ದುರ್ಬಲತೆಗಳನ್ನು ತಡೆಯಲು ಇನ್ಪುಟ್ ಕ್ಷೇತ್ರಗಳ ಮೇಲೆ ಗರಿಷ್ಠ ಉದ್ದದ ಮಿತಿಗಳನ್ನು ವಿಧಿಸಿ.
ಉದಾಹರಣೆ (ಪಿಎಚ್ಪಿ):
<?php
$username = $_POST['username'];
// Whitelist validation: Allow only alphanumeric characters and underscores
if (preg_match('/^[a-zA-Z0-9_]+$/', $username)) {
// Valid username
echo "Valid username: " . htmlspecialchars($username, ENT_QUOTES, 'UTF-8');
} else {
// Invalid username
echo "Invalid username. Only alphanumeric characters and underscores are allowed.";
}
?>
ಔಟ್ಪುಟ್ ಎನ್ಕೋಡಿಂಗ್ (ಎಸ್ಕೇಪಿಂಗ್)
ಔಟ್ಪುಟ್ ಎನ್ಕೋಡಿಂಗ್, ಇದನ್ನು ಎಸ್ಕೇಪಿಂಗ್ ಎಂದೂ ಕರೆಯುತ್ತಾರೆ, ಇದು ವಿಶೇಷ ಅಕ್ಷರಗಳನ್ನು ಅವುಗಳ ಎಚ್ಟಿಎಂಎಲ್ ಘಟಕಗಳು ಅಥವಾ ಯುಆರ್ಎಲ್-ಎನ್ಕೋಡ್ ಮಾಡಿದ ಸಮಾನಾರ್ಥಕಗಳಾಗಿ ಪರಿವರ್ತಿಸುವ ಪ್ರಕ್ರಿಯೆಯಾಗಿದೆ. ಇದು ಬ್ರೌಸರ್ ಅಕ್ಷರಗಳನ್ನು ಕೋಡ್ ಎಂದು ಅರ್ಥೈಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ.
- ಎಚ್ಟಿಎಂಎಲ್ ಎನ್ಕೋಡಿಂಗ್: ಎಚ್ಟಿಎಂಎಲ್ನಲ್ಲಿ ವಿಶೇಷ ಅರ್ಥವನ್ನು ಹೊಂದಿರುವ
<
,>
,&
,"
, ಮತ್ತು'
ನಂತಹ ಅಕ್ಷರಗಳನ್ನು ಎಸ್ಕೇಪ್ ಮಾಡಿ. ಪಿಎಚ್ಪಿಯಲ್ಲಿhtmlspecialchars()
ನಂತಹ ಕಾರ್ಯಗಳನ್ನು ಅಥವಾ ಇತರ ಭಾಷೆಗಳಲ್ಲಿ ಸಮಾನ ವಿಧಾನಗಳನ್ನು ಬಳಸಿ. - ಯುಆರ್ಎಲ್ ಎನ್ಕೋಡಿಂಗ್: ಯುಆರ್ಎಲ್ಗಳಲ್ಲಿ ವಿಶೇಷ ಅರ್ಥವನ್ನು ಹೊಂದಿರುವ ಅಕ್ಷರಗಳನ್ನು, ಉದಾಹರಣೆಗೆ ಸ್ಪೇಸ್ಗಳು, ಸ್ಲ್ಯಾಷ್ಗಳು ಮತ್ತು ಪ್ರಶ್ನಾರ್ಥಕ ಚಿಹ್ನೆಗಳನ್ನು ಎನ್ಕೋಡ್ ಮಾಡಿ. ಪಿಎಚ್ಪಿಯಲ್ಲಿ
urlencode()
ನಂತಹ ಕಾರ್ಯಗಳನ್ನು ಅಥವಾ ಇತರ ಭಾಷೆಗಳಲ್ಲಿ ಸಮಾನ ವಿಧಾನಗಳನ್ನು ಬಳಸಿ. - ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಎನ್ಕೋಡಿಂಗ್: ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ವಿಶೇಷ ಅರ್ಥವನ್ನು ಹೊಂದಿರುವ ಅಕ್ಷರಗಳನ್ನು, ಉದಾಹರಣೆಗೆ ಏಕ ಉಲ್ಲೇಖಗಳು, ಎರಡು ಉಲ್ಲೇಖಗಳು ಮತ್ತು ಬ್ಯಾಕ್ಸ್ಲ್ಯಾಶ್ಗಳನ್ನು ಎಸ್ಕೇಪ್ ಮಾಡಿ.
JSON.stringify()
ನಂತಹ ಕಾರ್ಯಗಳನ್ನು ಅಥವಾESAPI
(Encoder) ನಂತಹ ಲೈಬ್ರರಿಗಳನ್ನು ಬಳಸಿ.
ಉದಾಹರಣೆ (ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ - ಎಚ್ಟಿಎಂಎಲ್ ಎನ್ಕೋಡಿಂಗ್):
function escapeHTML(str) {
let div = document.createElement('div');
div.appendChild(document.createTextNode(str));
return div.innerHTML;
}
let userInput = '<script>alert("XSS");</script>';
let encodedInput = escapeHTML(userInput);
// Output the encoded input to the DOM
document.getElementById('output').innerHTML = encodedInput; // Output: <script>alert("XSS");</script>
ಉದಾಹರಣೆ (ಪೈಥಾನ್ - ಎಚ್ಟಿಎಂಎಲ್ ಎನ್ಕೋಡಿಂಗ್):
import html
user_input = '<script>alert("XSS");</script>'
encoded_input = html.escape(user_input)
print(encoded_input) # Output: <script>alert("XSS");</script>
ಸಂದರ್ಭ-ಅರಿತ ಎನ್ಕೋಡಿಂಗ್
ನೀವು ಬಳಸುವ ಎನ್ಕೋಡಿಂಗ್ ಪ್ರಕಾರವು ಡೇಟಾವನ್ನು ಪ್ರದರ್ಶಿಸುವ ಸಂದರ್ಭವನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ನೀವು ಎಚ್ಟಿಎಂಎಲ್ ಆಟ್ರಿಬ್ಯೂಟ್ನೊಳಗೆ ಡೇಟಾವನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತಿದ್ದರೆ, ನೀವು ಎಚ್ಟಿಎಂಎಲ್ ಆಟ್ರಿಬ್ಯೂಟ್ ಎನ್ಕೋಡಿಂಗ್ ಅನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ. ನೀವು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಸ್ಟ್ರಿಂಗ್ನೊಳಗೆ ಡೇಟಾವನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತಿದ್ದರೆ, ನೀವು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಸ್ಟ್ರಿಂಗ್ ಎನ್ಕೋಡಿಂಗ್ ಅನ್ನು ಬಳಸಬೇಕಾಗುತ್ತದೆ.
ಉದಾಹರಣೆ:
<input type="text" value="<?php echo htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8'); ?>">
ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ಯುಆರ್ಎಲ್ನ name
ಪ್ಯಾರಾಮೀಟರ್ನ ಮೌಲ್ಯವನ್ನು ಇನ್ಪುಟ್ ಕ್ಷೇತ್ರದ value
ಆಟ್ರಿಬ್ಯೂಟ್ನೊಳಗೆ ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತಿದೆ. htmlspecialchars()
ಫಂಕ್ಷನ್, name
ಪ್ಯಾರಾಮೀಟರ್ನಲ್ಲಿನ ಯಾವುದೇ ವಿಶೇಷ ಅಕ್ಷರಗಳನ್ನು ಸರಿಯಾಗಿ ಎನ್ಕೋಡ್ ಮಾಡಲಾಗಿದೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ, ಇದರಿಂದಾಗಿ ಎಕ್ಸ್ಎಸ್ಎಸ್ ದಾಳಿಗಳನ್ನು ತಡೆಯುತ್ತದೆ.
ಟೆಂಪ್ಲೇಟ್ ಇಂಜಿನ್ ಬಳಸುವುದು
ಅನೇಕ ಆಧುನಿಕ ವೆಬ್ ಫ್ರೇಮ್ವರ್ಕ್ಗಳು ಮತ್ತು ಟೆಂಪ್ಲೇಟ್ ಇಂಜಿನ್ಗಳು (ಉದಾ. ರಿಯಾಕ್ಟ್, ಆಂಗ್ಯುಲರ್, ವ್ಹ್ಯೂ.ಜೆಎಸ್, ಟ್ವಿಗ್, ಜಿಂಜಾ2) ಸ್ವಯಂಚಾಲಿತ ಔಟ್ಪುಟ್ ಎನ್ಕೋಡಿಂಗ್ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ. ಈ ಇಂಜಿನ್ಗಳು ಟೆಂಪ್ಲೇಟ್ಗಳಲ್ಲಿ ವೇರಿಯಬಲ್ಗಳನ್ನು ರೆಂಡರ್ ಮಾಡಿದಾಗ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಎಸ್ಕೇಪ್ ಮಾಡುತ್ತವೆ, ಇದರಿಂದಾಗಿ ಎಕ್ಸ್ಎಸ್ಎಸ್ ದುರ್ಬಲತೆಗಳ ಅಪಾಯವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ. ಯಾವಾಗಲೂ ನಿಮ್ಮ ಟೆಂಪ್ಲೇಟ್ ಇಂಜಿನ್ನ ಅಂತರ್ನಿರ್ಮಿತ ಎಸ್ಕೇಪಿಂಗ್ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಬಳಸಿ.
ಕಂಟೆಂಟ್ ಸೆಕ್ಯುರಿಟಿ ಪಾಲಿಸಿ (ಸಿಎಸ್ಪಿ)
ಸಿಎಸ್ಪಿ ಎಂದರೇನು?
ಕಂಟೆಂಟ್ ಸೆಕ್ಯುರಿಟಿ ಪಾಲಿಸಿ (ಸಿಎಸ್ಪಿ) ಒಂದು ಹೆಚ್ಚುವರಿ ಭದ್ರತಾ ಪದರವಾಗಿದ್ದು, ಇದು ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ (XSS) ಮತ್ತು ಡೇಟಾ ಇಂಜೆಕ್ಷನ್ ದಾಳಿಗಳಂತಹ ಕೆಲವು ರೀತಿಯ ದಾಳಿಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಮತ್ತು ತಗ್ಗಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಬ್ರೌಸರ್ ಯಾವ ಮೂಲಗಳಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ಅನುಮತಿಸಲಾಗಿದೆ ಎಂಬುದರ ವೈಟ್ಲಿಸ್ಟ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಸಿಎಸ್ಪಿ ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಈ ವೈಟ್ಲಿಸ್ಟ್ನಲ್ಲಿ ಡೊಮೇನ್ಗಳು, ಪ್ರೋಟೋಕಾಲ್ಗಳು ಮತ್ತು ನಿರ್ದಿಷ್ಟ ಯುಆರ್ಎಲ್ಗಳು ಸಹ ಸೇರಿರಬಹುದು.
ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ಬ್ರೌಸರ್ಗಳು ವೆಬ್ ಪುಟಗಳಿಗೆ ಯಾವುದೇ ಮೂಲದಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತವೆ. ಸಿಎಸ್ಪಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಲೋಡ್ ಮಾಡಬಹುದಾದ ಮೂಲಗಳನ್ನು ನಿರ್ಬಂಧಿಸುವ ಮೂಲಕ ಈ ಪೂರ್ವನಿಯೋಜಿತ ನಡವಳಿಕೆಯನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ. ವೆಬ್ಸೈಟ್ ವೈಟ್ಲಿಸ್ಟ್ನಲ್ಲಿ ಇಲ್ಲದ ಮೂಲದಿಂದ ಸಂಪನ್ಮೂಲವನ್ನು ಲೋಡ್ ಮಾಡಲು ಪ್ರಯತ್ನಿಸಿದರೆ, ಬ್ರೌಸರ್ ವಿನಂತಿಯನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ.
ಸಿಎಸ್ಪಿ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ
ಸರ್ವರ್ನಿಂದ ಬ್ರೌಸರ್ಗೆ ಎಚ್ಟಿಟಿಪಿ ಪ್ರತಿಕ್ರಿಯೆ ಹೆಡರ್ ಕಳುಹಿಸುವ ಮೂಲಕ ಸಿಎಸ್ಪಿ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ. ಹೆಡರ್ ಡೈರೆಕ್ಟಿವ್ಗಳ ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಪ್ರತಿಯೊಂದೂ ನಿರ್ದಿಷ್ಟ ರೀತಿಯ ಸಂಪನ್ಮೂಲಕ್ಕಾಗಿ ನೀತಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.
ಉದಾಹರಣೆ ಸಿಎಸ್ಪಿ ಹೆಡರ್:
Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://cdn.example.com; img-src 'self' data:; font-src 'self';
ಈ ಹೆಡರ್ ಕೆಳಗಿನ ನೀತಿಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ:
default-src 'self'
: ವೆಬ್ ಪುಟದ ಅದೇ ಮೂಲದಿಂದ (ಡೊಮೇನ್) ಮಾತ್ರ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.script-src 'self' https://example.com
: ಅದೇ ಮೂಲದಿಂದ ಮತ್ತುhttps://example.com
ನಿಂದ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಲೋಡ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.style-src 'self' https://cdn.example.com
: ಅದೇ ಮೂಲದಿಂದ ಮತ್ತುhttps://cdn.example.com
ನಿಂದ ಸಿಎಸ್ಎಸ್ ಲೋಡ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.img-src 'self' data:
: ಅದೇ ಮೂಲದಿಂದ ಮತ್ತು ಡೇಟಾ ಯುಆರ್ಐಗಳಿಂದ (ಬೇಸ್64-ಎನ್ಕೋಡ್ ಮಾಡಿದ ಚಿತ್ರಗಳು) ಚಿತ್ರಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.font-src 'self'
: ಅದೇ ಮೂಲದಿಂದ ಫಾಂಟ್ಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ.
ಸಿಎಸ್ಪಿ ಡೈರೆಕ್ಟಿವ್ಸ್
ಇಲ್ಲಿ ಕೆಲವು ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ ಸಿಎಸ್ಪಿ ಡೈರೆಕ್ಟಿವ್ಗಳಿವೆ:
default-src
: ಎಲ್ಲಾ ಸಂಪನ್ಮೂಲ ಪ್ರಕಾರಗಳಿಗೆ ಡೀಫಾಲ್ಟ್ ನೀತಿಯನ್ನು ಹೊಂದಿಸುತ್ತದೆ.script-src
: ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಯಾವ ಮೂಲಗಳಿಂದ ಲೋಡ್ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ.style-src
: ಸಿಎಸ್ಎಸ್ ಅನ್ನು ಯಾವ ಮೂಲಗಳಿಂದ ಲೋಡ್ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ.img-src
: ಚಿತ್ರಗಳನ್ನು ಯಾವ ಮೂಲಗಳಿಂದ ಲೋಡ್ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ.font-src
: ಫಾಂಟ್ಗಳನ್ನು ಯಾವ ಮೂಲಗಳಿಂದ ಲೋಡ್ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ.connect-src
: ಕ್ಲೈಂಟ್ ಯಾವ ಮೂಲಗಳಿಗೆ ಸಂಪರ್ಕಿಸಬಹುದು ಎಂಬುದನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ (ಉದಾ., ವೆಬ್ಸಾಕೆಟ್ಗಳು, ಎಕ್ಸ್ಎಂಎಲ್ಎಚ್ಟಿಟಿಪಿ ರಿಕ್ವೆಸ್ಟ್ ಮೂಲಕ).media-src
: ಆಡಿಯೋ ಮತ್ತು ವಿಡಿಯೋವನ್ನು ಯಾವ ಮೂಲಗಳಿಂದ ಲೋಡ್ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ.object-src
: ಪ್ಲಗಿನ್ಗಳನ್ನು (ಉದಾ., ಫ್ಲ್ಯಾಶ್) ಯಾವ ಮೂಲಗಳಿಂದ ಲೋಡ್ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ.frame-src
: ಫ್ರೇಮ್ಗಳಾಗಿ (<frame>
,<iframe>
) ಎಂಬೆಡ್ ಮಾಡಬಹುದಾದ ಮೂಲಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ.base-uri
: ಡಾಕ್ಯುಮೆಂಟ್ನ<base>
ಎಲಿಮೆಂಟ್ನಲ್ಲಿ ಬಳಸಬಹುದಾದ ಯುಆರ್ಎಲ್ಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ.form-action
: ಫಾರ್ಮ್ಗಳನ್ನು ಸಲ್ಲಿಸಬಹುದಾದ ಯುಆರ್ಎಲ್ಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ.upgrade-insecure-requests
: ಅಸುರಕ್ಷಿತ ವಿನಂತಿಗಳನ್ನು (HTTP) ಸುರಕ್ಷಿತ ವಿನಂತಿಗಳಿಗೆ (HTTPS) ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಪ್ಗ್ರೇಡ್ ಮಾಡಲು ಬ್ರೌಸರ್ಗೆ ಸೂಚಿಸುತ್ತದೆ.block-all-mixed-content
: ಯಾವುದೇ ಮಿಶ್ರ ವಿಷಯವನ್ನು (HTTPS ಮೇಲೆ ಲೋಡ್ ಮಾಡಿದ HTTP ವಿಷಯ) ಲೋಡ್ ಮಾಡುವುದನ್ನು ಬ್ರೌಸರ್ ತಡೆಯುತ್ತದೆ.report-uri
: ಸಿಎಸ್ಪಿ ನೀತಿಯನ್ನು ಉಲ್ಲಂಘಿಸಿದಾಗ ಬ್ರೌಸರ್ ಉಲ್ಲಂಘನೆ ವರದಿಗಳನ್ನು ಕಳುಹಿಸಬೇಕಾದ ಯುಆರ್ಎಲ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.report-to
: `Report-To` ಹೆಡರ್ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಗುಂಪಿನ ಹೆಸರನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ, ಇದು ಉಲ್ಲಂಘನೆ ವರದಿಗಳನ್ನು ಕಳುಹಿಸಲು ಎಂಡ್ಪಾಯಿಂಟ್ಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಇದು `report-uri` ಗಿಂತ ಹೆಚ್ಚು ಆಧುನಿಕ ಮತ್ತು ಹೊಂದಿಕೊಳ್ಳುವ ಬದಲಿಯಾಗಿದೆ.
ಸಿಎಸ್ಪಿ ಮೂಲ ಪಟ್ಟಿ ಮೌಲ್ಯಗಳು
ಪ್ರತಿಯೊಂದು ಸಿಎಸ್ಪಿ ಡೈರೆಕ್ಟಿವ್ ಮೂಲ ಮೌಲ್ಯಗಳ ಪಟ್ಟಿಯನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ, ಇದು ಅನುಮತಿಸಲಾದ ಮೂಲಗಳು ಅಥವಾ ಕೀವರ್ಡ್ಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.
'self'
: ವೆಬ್ ಪುಟದ ಅದೇ ಮೂಲದಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.'none'
: ಎಲ್ಲಾ ಮೂಲಗಳಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ನಿರಾಕರಿಸುತ್ತದೆ.'unsafe-inline'
: ಇನ್ಲೈನ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಮತ್ತು ಸಿಎಸ್ಎಸ್ ಅನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಇದನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ತಪ್ಪಿಸಬೇಕು, ಏಕೆಂದರೆ ಇದು ಎಕ್ಸ್ಎಸ್ಎಸ್ ವಿರುದ್ಧದ ರಕ್ಷಣೆಯನ್ನು ದುರ್ಬಲಗೊಳಿಸುತ್ತದೆ.'unsafe-eval'
:eval()
ಮತ್ತು ಸಂಬಂಧಿತ ಕಾರ್ಯಗಳ ಬಳಕೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಇದನ್ನು ಸಹ ತಪ್ಪಿಸಬೇಕು, ಏಕೆಂದರೆ ಇದು ಭದ್ರತಾ ದೋಷಗಳನ್ನು ಪರಿಚಯಿಸಬಹುದು.'strict-dynamic'
: ಮಾರ್ಕಪ್ನಲ್ಲಿ ನಾನ್ಸ್ ಅಥವಾ ಹ್ಯಾಶ್ ಮೂಲಕ ಸ್ಕ್ರಿಪ್ಟ್ಗೆ ಸ್ಪಷ್ಟವಾಗಿ ನೀಡಲಾದ ನಂಬಿಕೆಯನ್ನು, ಆ ಮೂಲ ಸ್ಕ್ರಿಪ್ಟ್ನಿಂದ ಲೋಡ್ ಮಾಡಲಾದ ಎಲ್ಲಾ ಸ್ಕ್ರಿಪ್ಟ್ಗಳಿಗೆ ಪ್ರಸಾರ ಮಾಡಬೇಕು ಎಂದು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ.https://example.com
: ನಿರ್ದಿಷ್ಟ ಡೊಮೇನ್ನಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.*.example.com
: ನಿರ್ದಿಷ್ಟ ಡೊಮೇನ್ನ ಯಾವುದೇ ಉಪಡೊಮೇನ್ನಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.data:
: ಡೇಟಾ ಯುಆರ್ಐಗಳನ್ನು (ಬೇಸ್64-ಎನ್ಕೋಡ್ ಮಾಡಿದ ಚಿತ್ರಗಳು) ಅನುಮತಿಸುತ್ತದೆ.mediastream:
: `media-src` ಗಾಗಿ `mediastream:` ಯುಆರ್ಐಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.blob:
: `blob:` ಯುಆರ್ಐಗಳನ್ನು (ಬ್ರೌಸರ್ನ ಮೆಮೊರಿಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾದ ಬೈನರಿ ಡೇಟಾಕ್ಕಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ) ಅನುಮತಿಸುತ್ತದೆ.filesystem:
: `filesystem:` ಯುಆರ್ಐಗಳನ್ನು (ಬ್ರೌಸರ್ನ ಸ್ಯಾಂಡ್ಬಾಕ್ಸ್ ಮಾಡಿದ ಫೈಲ್ಸಿಸ್ಟಮ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾದ ಫೈಲ್ಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ) ಅನುಮತಿಸುತ್ತದೆ.nonce-{random-value}
: ಹೊಂದಾಣಿಕೆಯಾಗುವnonce
ಆಟ್ರಿಬ್ಯೂಟ್ ಹೊಂದಿರುವ ಇನ್ಲೈನ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಅಥವಾ ಶೈಲಿಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.sha256-{hash-value}
: ಹೊಂದಾಣಿಕೆಯಾಗುವsha256
ಹ್ಯಾಶ್ ಹೊಂದಿರುವ ಇನ್ಲೈನ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಅಥವಾ ಶೈಲಿಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ.
ಸಿಎಸ್ಪಿ ಅಳವಡಿಕೆ
ಸಿಎಸ್ಪಿ ಅನ್ನು ಅಳವಡಿಸಲು ಹಲವಾರು ಮಾರ್ಗಗಳಿವೆ:
- ಎಚ್ಟಿಟಿಪಿ ಹೆಡರ್: ಸಿಎಸ್ಪಿ ಅನ್ನು ಅಳವಡಿಸಲು ಅತ್ಯಂತ ಸಾಮಾನ್ಯವಾದ ಮಾರ್ಗವೆಂದರೆ ಸರ್ವರ್ನ ಪ್ರತಿಕ್ರಿಯೆಯಲ್ಲಿ
Content-Security-Policy
ಎಚ್ಟಿಟಿಪಿ ಹೆಡರ್ ಅನ್ನು ಹೊಂದಿಸುವುದು. - ಮೆಟಾ ಟ್ಯಾಗ್: ಎಚ್ಟಿಎಂಎಲ್ ಡಾಕ್ಯುಮೆಂಟ್ನಲ್ಲಿ
<meta>
ಟ್ಯಾಗ್ ಬಳಸಿ ಸಿಎಸ್ಪಿ ಅನ್ನು ಸಹ ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು. ಆದಾಗ್ಯೂ, ಈ ವಿಧಾನವು ಕಡಿಮೆ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಕೆಲವು ಮಿತಿಗಳನ್ನು ಹೊಂದಿದೆ (ಉದಾ., ಇದನ್ನುframe-ancestors
ಡೈರೆಕ್ಟಿವ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಬಳಸಲಾಗುವುದಿಲ್ಲ).
ಉದಾಹರಣೆ (ಎಚ್ಟಿಟಿಪಿ ಹೆಡರ್ ಮೂಲಕ ಸಿಎಸ್ಪಿ ಹೊಂದಿಸುವುದು - ಅಪಾಚೆ):
ನಿಮ್ಮ ಅಪಾಚೆ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ನಲ್ಲಿ (ಉದಾ., .htaccess
ಅಥವಾ httpd.conf
), ಈ ಕೆಳಗಿನ ಸಾಲನ್ನು ಸೇರಿಸಿ:
Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://cdn.example.com; img-src 'self' data:; font-src 'self';"
ಉದಾಹರಣೆ (ಎಚ್ಟಿಟಿಪಿ ಹೆಡರ್ ಮೂಲಕ ಸಿಎಸ್ಪಿ ಹೊಂದಿಸುವುದು - ಎಂಜಿನ್ಎಕ್ಸ್):
ನಿಮ್ಮ ಎಂಜಿನ್ಎಕ್ಸ್ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ನಲ್ಲಿ (ಉದಾ., nginx.conf
), server
ಬ್ಲಾಕ್ಗೆ ಈ ಕೆಳಗಿನ ಸಾಲನ್ನು ಸೇರಿಸಿ:
add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://cdn.example.com; img-src 'self' data:; font-src 'self';";
ಉದಾಹರಣೆ (ಮೆಟಾ ಟ್ಯಾಗ್ ಮೂಲಕ ಸಿಎಸ್ಪಿ ಹೊಂದಿಸುವುದು):
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://cdn.example.com; img-src 'self' data:; font-src 'self';">
ಸಿಎಸ್ಪಿ ಪರೀಕ್ಷೆ
ನಿಮ್ಮ ಸಿಎಸ್ಪಿ ಅಳವಡಿಕೆಯು ನಿರೀಕ್ಷೆಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಅದನ್ನು ಪರೀಕ್ಷಿಸುವುದು ಬಹಳ ಮುಖ್ಯ. Content-Security-Policy
ಹೆಡರ್ ಅನ್ನು ಪರೀಕ್ಷಿಸಲು ಮತ್ತು ಯಾವುದೇ ಉಲ್ಲಂಘನೆಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ನೀವು ಬ್ರೌಸರ್ ಡೆವಲಪರ್ ಪರಿಕರಗಳನ್ನು ಬಳಸಬಹುದು.
ಸಿಎಸ್ಪಿ ವರದಿ ಮಾಡುವಿಕೆ
ಸಿಎಸ್ಪಿ ವರದಿ ಮಾಡುವಿಕೆಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲು `report-uri` ಅಥವಾ `report-to` ಡೈರೆಕ್ಟಿವ್ಗಳನ್ನು ಬಳಸಿ. ಸಿಎಸ್ಪಿ ನೀತಿಯನ್ನು ಉಲ್ಲಂಘಿಸಿದಾಗ ನಿಮ್ಮ ಸರ್ವರ್ ವರದಿಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಇದು ಅನುಮತಿಸುತ್ತದೆ. ಭದ್ರತಾ ದೋಷಗಳನ್ನು ಗುರುತಿಸಲು ಮತ್ತು ಸರಿಪಡಿಸಲು ಈ ಮಾಹಿತಿಯು ಅಮೂಲ್ಯವಾಗಿರುತ್ತದೆ.
ಉದಾಹರಣೆ (report-uri ಜೊತೆಗೆ ಸಿಎಸ್ಪಿ):
Content-Security-Policy: default-src 'self'; report-uri /csp-report-endpoint;
ಉದಾಹರಣೆ (report-to ಜೊತೆಗೆ ಸಿಎಸ್ಪಿ - ಹೆಚ್ಚು ಆಧುನಿಕ):
Report-To: {"group":"csp-endpoint","max_age":10886400,"endpoints":[{"url":"https://your-domain.com/csp-report-endpoint"}]}
Content-Security-Policy: default-src 'self'; report-to csp-endpoint;
ಈ ಉದಾಹರಣೆಗಳಲ್ಲಿ ಸರ್ವರ್-ಸೈಡ್ ಎಂಡ್ಪಾಯಿಂಟ್ (`/csp-report-endpoint`) ಈ ಜೆಸನ್ (JSON) ವರದಿಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಮತ್ತು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕು, ನಂತರದ ವಿಶ್ಲೇಷಣೆಗಾಗಿ ಅವುಗಳನ್ನು ಲಾಗ್ ಮಾಡಬೇಕು.
ಸಿಎಸ್ಪಿ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು
- ಕಟ್ಟುನಿಟ್ಟಾದ ನೀತಿಯೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ: ಕೇವಲ ಅದೇ ಮೂಲದಿಂದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಅನುಮತಿಸುವ ನಿರ್ಬಂಧಿತ ನೀತಿಯೊಂದಿಗೆ (
default-src 'self'
) ಪ್ರಾರಂಭಿಸಿ. ಅಗತ್ಯವಿರುವಂತೆ ನೀತಿಯನ್ನು ಕ್ರಮೇಣ ಸಡಿಲಗೊಳಿಸಿ, ಅಗತ್ಯವಿರುವ ನಿರ್ದಿಷ್ಟ ಮೂಲಗಳನ್ನು ಸೇರಿಸಿ. 'unsafe-inline'
ಮತ್ತು'unsafe-eval'
ಅನ್ನು ತಪ್ಪಿಸಿ: ಈ ಡೈರೆಕ್ಟಿವ್ಗಳು ಎಕ್ಸ್ಎಸ್ಎಸ್ ವಿರುದ್ಧದ ರಕ್ಷಣೆಯನ್ನು ಗಮನಾರ್ಹವಾಗಿ ದುರ್ಬಲಗೊಳಿಸುತ್ತವೆ. ಸಾಧ್ಯವಾದಾಗಲೆಲ್ಲಾ ಅವುಗಳನ್ನು ತಪ್ಪಿಸಲು ಪ್ರಯತ್ನಿಸಿ. ಇನ್ಲೈನ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಮತ್ತು ಶೈಲಿಗಳಿಗಾಗಿ ನಾನ್ಸ್ಗಳು ಅಥವಾ ಹ್ಯಾಶ್ಗಳನ್ನು ಬಳಸಿ ಮತ್ತುeval()
ಅನ್ನು ಬಳಸುವುದನ್ನು ತಪ್ಪಿಸಿ.- ಇನ್ಲೈನ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಮತ್ತು ಶೈಲಿಗಳಿಗಾಗಿ ನಾನ್ಸ್ಗಳು ಅಥವಾ ಹ್ಯಾಶ್ಗಳನ್ನು ಬಳಸಿ: ನೀವು ಇನ್ಲೈನ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು ಅಥವಾ ಶೈಲಿಗಳನ್ನು ಬಳಸಬೇಕಾದರೆ, ಅವುಗಳನ್ನು ವೈಟ್ಲಿಸ್ಟ್ ಮಾಡಲು ನಾನ್ಸ್ಗಳು ಅಥವಾ ಹ್ಯಾಶ್ಗಳನ್ನು ಬಳಸಿ.
- ಸಿಎಸ್ಪಿ ವರದಿ ಮಾಡುವಿಕೆಯನ್ನು ಬಳಸಿ: ನೀತಿಯನ್ನು ಉಲ್ಲಂಘಿಸಿದಾಗ ಅಧಿಸೂಚನೆಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ಸಿಎಸ್ಪಿ ವರದಿ ಮಾಡುವಿಕೆಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ. ಇದು ಭದ್ರತಾ ದೋಷಗಳನ್ನು ಗುರುತಿಸಲು ಮತ್ತು ಸರಿಪಡಿಸಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.
- ನಿಮ್ಮ ಸಿಎಸ್ಪಿ ಅಳವಡಿಕೆಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಪರೀಕ್ಷಿಸಿ:
Content-Security-Policy
ಹೆಡರ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲು ಮತ್ತು ಯಾವುದೇ ಉಲ್ಲಂಘನೆಗಳಿಗಾಗಿ ಪರಿಶೀಲಿಸಲು ಬ್ರೌಸರ್ ಡೆವಲಪರ್ ಪರಿಕರಗಳನ್ನು ಬಳಸಿ. - ಸಿಎಸ್ಪಿ ಜನರೇಟರ್ ಬಳಸಿ: ನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಅವಶ್ಯಕತೆಗಳ ಆಧಾರದ ಮೇಲೆ ಸಿಎಸ್ಪಿ ಹೆಡರ್ಗಳನ್ನು ರಚಿಸಲು ಹಲವಾರು ಆನ್ಲೈನ್ ಪರಿಕರಗಳು ಸಹಾಯ ಮಾಡುತ್ತವೆ.
- ಸಿಎಸ್ಪಿ ವರದಿಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಿ: ಸಂಭಾವ್ಯ ಭದ್ರತಾ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸಲು ಮತ್ತು ನಿಮ್ಮ ನೀತಿಯನ್ನು ಪರಿಷ್ಕರಿಸಲು ಸಿಎಸ್ಪಿ ವರದಿಗಳನ್ನು ನಿಯಮಿತವಾಗಿ ಪರಿಶೀಲಿಸಿ.
- ನಿಮ್ಮ ಸಿಎಸ್ಪಿ ಅನ್ನು ನವೀಕೃತವಾಗಿರಿಸಿ: ನಿಮ್ಮ ವೆಬ್ಸೈಟ್ ವಿಕಸನಗೊಂಡಂತೆ, ಸಂಪನ್ಮೂಲ ಅವಲಂಬನೆಗಳಲ್ಲಿನ ಯಾವುದೇ ಬದಲಾವಣೆಗಳನ್ನು ಪ್ರತಿಬಿಂಬಿಸಲು ನಿಮ್ಮ ಸಿಎಸ್ಪಿ ಅನ್ನು ನವೀಕರಿಸುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.
- ಕಂಟೆಂಟ್ ಸೆಕ್ಯುರಿಟಿ ಪಾಲಿಸಿ (CSP) ಲಿಂಟರ್ ಬಳಸುವುದನ್ನು ಪರಿಗಣಿಸಿ: `csp-html-webpack-plugin` ಅಥವಾ ಬ್ರೌಸರ್ ವಿಸ್ತರಣೆಗಳಂತಹ ಪರಿಕರಗಳು ನಿಮ್ಮ ಸಿಎಸ್ಪಿ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಮೌಲ್ಯೀಕರಿಸಲು ಮತ್ತು ಆಪ್ಟಿಮೈಜ್ ಮಾಡಲು ಸಹಾಯ ಮಾಡಬಹುದು.
- ಸಿಎಸ್ಪಿ ಅನ್ನು ಕ್ರಮೇಣ ಜಾರಿಗೊಳಿಸಿ (ವರದಿ-ಮಾತ್ರ ಮೋಡ್): ಆರಂಭದಲ್ಲಿ `Content-Security-Policy-Report-Only` ಹೆಡರ್ ಬಳಸಿ ಸಿಎಸ್ಪಿ ಅನ್ನು "ವರದಿ-ಮಾತ್ರ" ಮೋಡ್ನಲ್ಲಿ ನಿಯೋಜಿಸಿ. ಇದು ಸಂಪನ್ಮೂಲಗಳನ್ನು ನಿರ್ಬಂಧಿಸದೆ ಸಂಭಾವ್ಯ ನೀತಿ ಉಲ್ಲಂಘನೆಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಅದನ್ನು ಜಾರಿಗೊಳಿಸುವ ಮೊದಲು ನಿಮ್ಮ ಸಿಎಸ್ಪಿ ಅನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ವರದಿಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ.
ಉದಾಹರಣೆ (ನಾನ್ಸ್ ಅಳವಡಿಕೆ):
ಸರ್ವರ್-ಸೈಡ್ (ನಾನ್ಸ್ ರಚಿಸಿ):
<?php
$nonce = base64_encode(random_bytes(16));
?>
ಎಚ್ಟಿಎಂಎಲ್:
<script nonce="<?php echo $nonce; ?>">
// Your inline script here
console.log('Inline script with nonce');
</script>
ಸಿಎಸ್ಪಿ ಹೆಡರ್:
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-<?php echo $nonce; ?>';
ಸಿಎಸ್ಪಿ ಮತ್ತು ಮೂರನೇ-ಪಕ್ಷದ ಲೈಬ್ರರಿಗಳು
ಮೂರನೇ-ಪಕ್ಷದ ಲೈಬ್ರರಿಗಳು ಅಥವಾ ಸಿಡಿಎನ್ಗಳನ್ನು ಬಳಸುವಾಗ, ನಿಮ್ಮ ಸಿಎಸ್ಪಿ ನೀತಿಯಲ್ಲಿ ಅವುಗಳ ಡೊಮೇನ್ಗಳನ್ನು ಸೇರಿಸುವುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ. ಉದಾಹರಣೆಗೆ, ನೀವು ಸಿಡಿಎನ್ನಿಂದ ಜೆಕ್ವೆರಿ ಬಳಸುತ್ತಿದ್ದರೆ, ನೀವು ಸಿಡಿಎನ್ನ ಡೊಮೇನ್ ಅನ್ನು script-src
ಡೈರೆಕ್ಟಿವ್ಗೆ ಸೇರಿಸಬೇಕಾಗುತ್ತದೆ.
ಆದಾಗ್ಯೂ, ಸಂಪೂರ್ಣ ಸಿಡಿಎನ್ಗಳನ್ನು ಕುರುಡಾಗಿ ವೈಟ್ಲಿಸ್ಟ್ ಮಾಡುವುದು ಭದ್ರತಾ ಅಪಾಯಗಳನ್ನು ಪರಿಚಯಿಸಬಹುದು. ಸಿಡಿಎನ್ಗಳಿಂದ ಲೋಡ್ ಮಾಡಲಾದ ಫೈಲ್ಗಳ ಸಮಗ್ರತೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಸಬ್ರಿಸೋರ್ಸ್ ಇಂಟೆಗ್ರಿಟಿ (SRI) ಅನ್ನು ಬಳಸುವುದನ್ನು ಪರಿಗಣಿಸಿ.
ಸಬ್ರಿಸೋರ್ಸ್ ಇಂಟೆಗ್ರಿಟಿ (SRI)
ಎಸ್ಆರ್ಐ (SRI) ಒಂದು ಭದ್ರತಾ ವೈಶಿಷ್ಟ್ಯವಾಗಿದ್ದು, ಸಿಡಿಎನ್ಗಳು ಅಥವಾ ಇತರ ಮೂರನೇ-ಪಕ್ಷದ ಮೂಲಗಳಿಂದ ಪಡೆದ ಫೈಲ್ಗಳನ್ನು ತಿರುಚಿಲ್ಲ ಎಂದು ಪರಿಶೀಲಿಸಲು ಬ್ರೌಸರ್ಗಳಿಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಎಸ್ಆರ್ಐ ಪಡೆದ ಫೈಲ್ನ ಕ್ರಿಪ್ಟೋಗ್ರಾಫಿಕ್ ಹ್ಯಾಶ್ ಅನ್ನು ತಿಳಿದಿರುವ ಹ್ಯಾಶ್ನೊಂದಿಗೆ ಹೋಲಿಸುವ ಮೂಲಕ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಹ್ಯಾಶ್ಗಳು ಹೊಂದಿಕೆಯಾಗದಿದ್ದರೆ, ಬ್ರೌಸರ್ ಫೈಲ್ ಲೋಡ್ ಆಗುವುದನ್ನು ತಡೆಯುತ್ತದೆ.
ಉದಾಹರಣೆ:
<script src="https://example.com/jquery.min.js" integrity="sha384-example-hash" crossorigin="anonymous"></script>
integrity
ಆಟ್ರಿಬ್ಯೂಟ್ jquery.min.js
ಫೈಲ್ನ ಕ್ರಿಪ್ಟೋಗ್ರಾಫಿಕ್ ಹ್ಯಾಶ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ. ವಿವಿಧ ಮೂಲಗಳಿಂದ ಸೇವೆ ಸಲ್ಲಿಸುವ ಫೈಲ್ಗಳೊಂದಿಗೆ ಎಸ್ಆರ್ಐ ಕಾರ್ಯನಿರ್ವಹಿಸಲು crossorigin
ಆಟ್ರಿಬ್ಯೂಟ್ ಅಗತ್ಯವಿದೆ.
ತೀರ್ಮಾನ
ಫ್ರಂಟ್-ಎಂಡ್ ಭದ್ರತೆಯು ವೆಬ್ ಅಭಿವೃದ್ಧಿಯ ಒಂದು ನಿರ್ಣಾಯಕ ಅಂಶವಾಗಿದೆ. ಎಕ್ಸ್ಎಸ್ಎಸ್ ತಡೆಗಟ್ಟುವಿಕೆ ತಂತ್ರಗಳು ಮತ್ತು ಕಂಟೆಂಟ್ ಸೆಕ್ಯುರಿಟಿ ಪಾಲಿಸಿ (ಸಿಎಸ್ಪಿ) ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಂಡು ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೂಲಕ, ನೀವು ದಾಳಿಯ ಅಪಾಯವನ್ನು ಗಣನೀಯವಾಗಿ ಕಡಿಮೆ ಮಾಡಬಹುದು ಮತ್ತು ನಿಮ್ಮ ಬಳಕೆದಾರರ ಡೇಟಾವನ್ನು ರಕ್ಷಿಸಬಹುದು. ಇನ್ಪುಟ್ ಮೌಲ್ಯೀಕರಣ, ಔಟ್ಪುಟ್ ಎನ್ಕೋಡಿಂಗ್, ಸಿಎಸ್ಪಿ ಮತ್ತು ಇತರ ಭದ್ರತಾ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಸಂಯೋಜಿಸಿ ಬಹು-ಪದರದ ವಿಧಾನವನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳಲು ಮರೆಯದಿರಿ. ಸುರಕ್ಷಿತ ಮತ್ತು ದೃಢವಾದ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಇತ್ತೀಚಿನ ಭದ್ರತಾ ಬೆದರಿಕೆಗಳು ಮತ್ತು ತಗ್ಗಿಸುವ ತಂತ್ರಗಳ ಬಗ್ಗೆ ಕಲಿಯುತ್ತಿರಿ ಮತ್ತು ನವೀಕೃತವಾಗಿರಿ.
ಈ ಮಾರ್ಗದರ್ಶಿಯು ಎಕ್ಸ್ಎಸ್ಎಸ್ ತಡೆಗಟ್ಟುವಿಕೆ ಮತ್ತು ಸಿಎಸ್ಪಿಯ ಮೂಲಭೂತ ತಿಳುವಳಿಕೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ಭದ್ರತೆಯು ಒಂದು ನಿರಂತರ ಪ್ರಕ್ರಿಯೆ ಎಂಬುದನ್ನು ನೆನಪಿಡಿ, ಮತ್ತು ಸಂಭಾವ್ಯ ಬೆದರಿಕೆಗಳಿಗಿಂತ ಮುಂದೆ ಉಳಿಯಲು ನಿರಂತರ ಕಲಿಕೆ ಅತ್ಯಗತ್ಯ. ಈ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೂಲಕ, ನಿಮ್ಮ ಬಳಕೆದಾರರಿಗೆ ನೀವು ಹೆಚ್ಚು ಸುರಕ್ಷಿತ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹ ವೆಬ್ ಅನುಭವವನ್ನು ರಚಿಸಬಹುದು.