ওয়েব স্ক্র্যাপিং বা HTML ডেটা প্রোসেসিংয়ের সময় নিরাপত্তার দৃষ্টিকোণ থেকে অনেক সময় কিছু unsafe HTML elements এবং attributes থাকতে পারে, যেমন <script>, <iframe>, <style> বা কিছু ইনজেকশন সৃষ্টিকারী অ্যাট্রিবিউট (যেমন onclick, onerror)। এসব unsafe elements এবং attributes সরিয়ে দেওয়া প্রয়োজন। JSoup এ নিরাপদ HTML তৈরি করার জন্য বিভিন্ন পদ্ধতি রয়েছে।
Unsafe Elements এবং Attributes সরানোর পদ্ধতি
JSoup ব্যবহার করে Unsafe Elements সরানো
JSoup ব্যবহার করে আপনি HTML ডকুমেন্ট থেকে নির্দিষ্ট unsafe elements যেমন <script>, <style>, <iframe> ইত্যাদি সরিয়ে ফেলতে পারেন। JSoup এর Document অবজেক্টে select() মেথড ব্যবহার করে সহজেই এগুলো খুঁজে বের করা সম্ভব।
উদাহরণ: Unsafe Elements সরানো
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupExample {
public static void main(String[] args) {
String html = "<html><body><script>alert('XSS Attack!');</script><h1>Hello, World!</h1><iframe src='malicious_site.com'></iframe></body></html>";
// HTML ডকুমেন্ট পার্স করা
Document doc = Jsoup.parse(html);
// Unsafe elements (script, iframe) সরানো
doc.select("script").remove(); // <script> ট্যাগ সরানো
doc.select("iframe").remove(); // <iframe> ট্যাগ সরানো
// নিরাপদ HTML আউটপুট
System.out.println(doc.html());
}
}
এখানে:
doc.select("script").remove()মাধ্যমে সব<script>ট্যাগ সরিয়ে ফেলা হয়েছে।doc.select("iframe").remove()মাধ্যমে সব<iframe>ট্যাগ সরিয়ে ফেলা হয়েছে।
Unsafe Attributes সরানোর পদ্ধতি
HTML এলিমেন্টে কিছু unsafe অ্যাট্রিবিউট থাকতে পারে, যেমন onclick, onerror, onload ইত্যাদি। এই অ্যাট্রিবিউটগুলিকে JSoup ব্যবহার করে সরানো যায়, যাতে করে নিরাপত্তা ঝুঁকি কমে।
উদাহরণ: Unsafe Attributes সরানো
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupExample {
public static void main(String[] args) {
String html = "<html><body><a href='#' onclick='alert(\"XSS Attack!\")'>Click me</a></body></html>";
// HTML ডকুমেন্ট পার্স করা
Document doc = Jsoup.parse(html);
// unsafe attribute (onclick) সরানো
Elements links = doc.select("a");
for (Element link : links) {
link.removeAttr("onclick"); // onclick অ্যাট্রিবিউট সরানো
}
// নিরাপদ HTML আউটপুট
System.out.println(doc.html());
}
}
এখানে:
link.removeAttr("onclick")ব্যবহার করে<a>ট্যাগ থেকেonclickঅ্যাট্রিবিউট সরানো হয়েছে।
Safe HTML Output তৈরি করা
JSoup এ clean() মেথড ব্যবহার করে নিরাপদ HTML তৈরি করা যায়। এটি শুধু নিরাপদ HTML tags এবং attributes রাখতে সাহায্য করে, যেমন: <b>, <i>, <p>, ইত্যাদি।
উদাহরণ: Safe HTML Output তৈরি করা
import org.jsoup.Jsoup;
import org.jsoup.safety.Safelist;
import org.jsoup.nodes.Document;
public class JsoupExample {
public static void main(String[] args) {
String html = "<html><body><script>alert('XSS Attack!');</script><a href='#' onclick='alert(\"XSS\")'>Click me</a><p>Safe paragraph.</p></body></html>";
// unsafe HTML থেকে নিরাপদ HTML তৈরি করা
String safeHtml = Jsoup.clean(html, Safelist.basic()); // Safelist.basic() দিয়ে শুধু নিরাপদ ট্যাগ রাখা হবে
// নিরাপদ HTML আউটপুট
System.out.println(safeHtml);
}
}
এখানে:
Jsoup.clean(html, Safelist.basic())মেথডটি unsafe elements এবং unsafe attributes সরিয়ে রেখে শুধুমাত্র নিরাপদ HTML ট্যাগ রাখে। এখানেSafelist.basic()শুধুমাত্র সাধারণ ট্যাগ যেমন:<p>,<a>,<b>ইত্যাদি অনুমোদন করে।
সারাংশ
JSoup ব্যবহার করে HTML ডকুমেন্ট থেকে unsafe elements এবং attributes সরানো খুবই সহজ। select() মেথড দিয়ে unsafe elements (যেমন <script>, <iframe>) সরানো যেতে পারে, আর removeAttr() মেথড দিয়ে unsafe attributes (যেমন onclick, onerror) সরানো যায়। এছাড়া Jsoup.clean() মেথডের মাধ্যমে নিরাপদ HTML আউটপুট তৈরি করা সম্ভব, যা শুধুমাত্র অনুমোদিত এবং নিরাপদ ট্যাগ এবং attributes রাখে। এইভাবে আপনি আপনার HTML ডকুমেন্টকে নিরাপদ এবং পরিষ্কার রাখতে পারেন।
Read more