
एक सरल और हल्की लाइब्रेरी जो सुरक्षा दृष्टिकोण से SVG फ़ाइलों को मान्य करने में मदद करती है।
एक सरल और हल्की लाइब्रेरी जो सुरक्षा दृष्टिकोण से SVG फ़ाइलों को सत्यापित करने में मदद करती है।
यह अपलोड किए गए SVG के भीतर दुर्भावनापूर्ण सामग्री का पता लगाने में आपकी सहायता करेगा।
अधिक जानकारी के लिए https://sekurak.pl/pozwalasz-ladowac-pliki-svg-masz-xss-a/ पढ़ें।
इस SVG को अपने एप्लिकेशन में अपलोड करने का प्रयास करें, यदि यह पास हो जाता है और उपयोगकर्ता इस फ़ाइल को ब्राउज़ कर सकता है - तो संभवतः आप XSS हमले के प्रति असुरक्षित हैं।
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
<polygon id="triangle" points="0,0 0,50 50,0" fill="#009900" stroke="#004400"/>
<script type="text/javascript">
alert('Hello, world!');
</script>
</svg>
लाइब्रेरी निर्भरता जोड़ें:
implementation "com.github.bgalek.security.svg:safe-svg:1.2.0"
आप अपलोड की गई svg फ़ाइलों की जाँच करने के लिए इस लाइब्रेरी का उपयोग कर सकते हैं
SvgSecurityValidator svgSecurityValidator = SvgSecurityValidator.builder().build();
String svg = "<?xml version=\"1.0\" standalone=\"no\"?>\n" +
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n" +
"<svg version=\"1.1\" baseProfile=\"full\" xmlns=\"http://www.w3.org/2000/svg\">\n" +
"<polygon id=\"triangle\" points=\"0,0 0,50 50,0\" fill=\"#009900\" stroke=\"#004400\"/>\n" +
"<script type=\"text/javascript\">\n" +
"alert('Hello, world!');\n" +
"</script>\n" +
"</svg>";
ValidationResult validation = svgSecurityValidator.validate(svg);
if (validation.hasViolations()) {
throw new RuntimeException("this file is suspicious" + validation.getOffendingElements());
}
यदि आप अन्य (संभवतः असुरक्षित) तत्वों/विशेषताओं की अनुमति देना चाहते हैं तो उपयोग करें
ValidationResult detect = SvgSecurityValidator.builder()
.withAdditionalElements(elements)
.withAdditionalAttributes(attributes)
.build()
.validate(testFile);
आप सख्त XML सिंटैक्स सत्यापन भी सक्षम कर सकते हैं। इनपुट को XXE-हार्डन्ड
पार्सर के साथ पार्स किया जाता है (बाहरी एंटिटी और DTD कभी भी हल नहीं किए जाते, एंटिटी विस्तार अक्षम है), और
विकृत XML के लिए InvalidXMLSyntaxException फेंका जाता है:
ValidationResult detect = SvgSecurityValidator.builder()
.withSyntaxValidation()
.build()
.validate(testFile);
String और byte[] दोनों इनपुट समर्थित हैं (byte[] को UTF-8 के रूप में डिकोड किया जाता है)।