
Java लाइब्रेरी जो JavaScript, इनलाइन इवेंट हैंडलर और स्क्रिप्ट टैग को हटाकर तथा XSS को रोकने के लिए बाहरी संसाधन लोडिंग को अवरुद्ध करके SVG फ़ाइलों को सैनिटाइज़ करती है।
SVG Sanitizer एक Java लाइब्रेरी है जिसे SVG फ़ाइलों को साफ़ करने के लिए डिज़ाइन किया गया है, जो संभावित रूप से खतरनाक JavaScript को हटाती है, बाहरी संसाधन लोडिंग को अवरुद्ध करती है, और XSS (Cross-Site Scripting) कमज़ोरियों को रोकती है। यह सुनिश्चित करने के लिए उपयोगी है कि SVG फ़ाइलें विभिन्न अनुप्रयोगों में, जिनमें वेब वातावरण भी शामिल हैं, उपयोग करने के लिए सुरक्षित हों।
<script> टैग शामिल हैं।अपने Java प्रोजेक्ट में SVG Sanitizer का उपयोग करने के लिए, io.github.borewit:svg-sanitizer Maven निर्भरता शामिल करें।
public class SVGSanitizerExample {
public static void main(String[] args) {
String dirtySvgContent = """
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="400" viewBox="0 0 124 124" fill="none">
<rect width="124" height="124" rx="24" fill="#000000"/>
<script type="text/javascript">
alert(0x539);
</script>
</svg>""";
try {
String sanitizedSvg = SVGSanitizer.sanitize(dirtySvgContent);
System.out.println(sanitizedSvg);
} catch (Exception e) {
e.printStackTrace();
}
}
}
जो सैनिटाइज़ किया गया SVG आउटपुट करेगा:
<svg xmlns="http://www.w3.org/2000/svg" fill="none" height="400" viewBox="0 0 124 124" width="400">
<rect fill="#000000" height="124" rx="24" width="124"/>
</svg>
InputStream से OutputStream तक सैनिटाइज़ करें:
import java.io.*;
public class SVGSanitizerExample {
public static void main(String[] args) throws Exception {
File inputFile = new File("unsafe.svg");
File outputFile = new File("sanitized.svg");
try (InputStream inputStream = new FileInputStream(inputFile)) {
try (OutputStream outputStream = new FileOutputStream(outputFile)) {
SVGSanitizer.sanitize(inputStream, outputStream);
}
}
System.out.println("Sanitized SVG has been saved to " + outputFile.getAbsolutePath());
}
}
InputStream से InputStream तक सैनिटाइज़ करें:
import java.io.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
public class SVGSanitizerExample {
public static void main(String[] args) throws Exception {
File inputFile = new File("unsafe.svg"); // Potentially unsafe SVG file
try (InputStream inputStream = new FileInputStream(inputFile);
InputStream sanitizedStream = SVGSanitizer.sanitize(inputStream)) {
// Pass the sanitized stream to an XML parser (without converting it to a String)
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(sanitizedStream);
System.out.println("SVG file successfully parsed after sanitization.");
}
}
}
public static String sanitize(String svgContent)
इस विधि का उपयोग केवल तब करना चाहिए जब पूरे SVG को मेमोरी में लोड करना कोई समस्या न हो।
public static void sanitize(InputStream inputStream, OutputStream outputStream)
दिए गए outputStream में सैनिटाइज़ किया गया SVG लिखता है
public static InputStream sanitize(InputStream inputStream)
यह एक फ़िल्टर के रूप में कार्य करता है, जो सैनिटाइज़ किए गए SVG के साथ एक नया InputStream लौटाता है।
उपयोगकर्ता द्वारा अपलोड किए गए SVG में दुर्भावनापूर्ण सामग्री हो सकती है जो ब्राउज़र संदर्भ में निष्पादित हो सकती है। SVG को सैनिटाइज़ करना एक महत्वपूर्ण कदम है, लेकिन पूर्ण सुरक्षा के लिए इसे अन्य उपायों के साथ संयोजित किया जाना चाहिए। व्यापक अवलोकन के लिए SVG सुरक्षा सर्वोत्तम प्रथाएँ देखें।
यह प्रोजेक्ट MIT लाइसेंस के अंतर्गत लाइसेंस प्राप्त है