मुझे आश्चर्य है कि सी # कक्षा या तृतीय पक्ष लाइब्रेरी का कोई भी प्रकार है जो स्क्रिप्ट टैग जैसे खतरनाक पात्रों को हटा देता है?खतरनाक पात्रों को कैसे हटाएं (यानी स्क्रिप्ट टैग)?
मुझे पता है कि आप रेगेक्स का उपयोग कर सकते हैं लेकिन मुझे यह भी पता है कि लोग अपने स्क्रिप्ट टैग लिख सकते हैं ताकि आप सोचने में रेगेक्स को मूर्ख बना सकें।
मैंने यह भी सुना है कि HTML Agility Pack अच्छा है इसलिए मुझे आश्चर्य है कि इसके लिए कोई स्क्रिप्ट हटाने की कक्षा बनाई गई है?
संपादित
http://htmlagilitypack.codeplex.com/Thread/View.aspx?ThreadId=24346
मैं उनके रूपों पर इस पाया। हालांकि मुझे यकीन नहीं है कि यह पूरा समाधान है क्योंकि लड़के के पास इसका समर्थन करने के लिए कोई परीक्षण नहीं है और यह अच्छा होगा अगर यह किसी साइट पर था जहां बहुत से लोग इस स्क्रिप्ट का उपयोग करते हुए यह देखने के लिए हर दिन परीक्षण करते हैं कि कुछ भी हो द्वारा।
महान उदाहरण (लगभग), धन्यवाद! जब के साथ लिंक की तलाश में
1) केस-संवेदी खोज का उपयोग करें: कुछ तरीके, यह मजबूत है कि मैंने देखा बनाने के लिए हालांकि "जावास्क्रिप्ट:", "VBScript:", "jscript:"।
<a href="JAVAscRipt:alert('hi')">click> me</a>
2) किसी भी शैली जिम्मेदार बताते हैं कि एक अभिव्यक्ति नियम शामिल निकालें: उदाहरण के लिए, मूल उदाहरण एचटीएमएल नहीं निकलेगी। इंटरनेट एक्सप्लोरर सीएसएस नियम स्क्रिप्ट के रूप में व्यक्त करता है। उदाहरण के लिए, निम्नलिखित हैं उत्पाद एक संदेश बॉक्स:
<div style="width:expression(alert('hi'));">bad> code</div>
3) इसके अलावा टैग
को दूर मैं ईमानदारी से पता नहीं क्यों "अभिव्यक्ति" IE से निकाला नहीं गया है - में प्रमुख दोष मेरी राय। ( इंटरनेट एक्सप्लोरर में div उदाहरण देखें और आप देखेंगे कि क्यों - IE8 भी।) I बस उपयोगकर्ता से HTML इनपुट को साफ़ करने के लिए एक आसान/मानक तरीका था।
यहां इन सुधारों के साथ अपडेट किया गया कोड है। अगर आपको कुछ भी गलत लगता है तो मुझे बताएं:
public string ScrubHTML(string html)
{
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
//Remove potentially harmful elements
HtmlNodeCollection nc = doc.DocumentNode.SelectNodes("//script|//link|//iframe|//frameset|//frame|//applet|//object|//embed");
if (nc != null)
{
foreach (HtmlNode node in nc)
{
node.ParentNode.RemoveChild(node, false);
}
}
//remove hrefs to java/j/vbscript URLs
nc = doc.DocumentNode.SelectNodes("//a[starts-with(translate(@href, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'javascript')]|//a[starts-with(translate(@href, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'jscript')]|//a[starts-with(translate(@href, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'vbscript')]");
if (nc != null)
{
foreach (HtmlNode node in nc)
{
node.SetAttributeValue("href", "#");
}
}
//remove img with refs to java/j/vbscript URLs
nc = doc.DocumentNode.SelectNodes("//img[starts-with(translate(@src, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'javascript')]|//img[starts-with(translate(@src, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'jscript')]|//img[starts-with(translate(@src, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'vbscript')]");
if (nc != null)
{
foreach (HtmlNode node in nc)
{
node.SetAttributeValue("src", "#");
}
}
//remove on<Event> handlers from all tags
nc = doc.DocumentNode.SelectNodes("//*[@onclick or @onmouseover or @onfocus or @onblur or @onmouseout or @ondoubleclick or @onload or @onunload]");
if (nc != null)
{
foreach (HtmlNode node in nc)
{
node.Attributes.Remove("onFocus");
node.Attributes.Remove("onBlur");
node.Attributes.Remove("onClick");
node.Attributes.Remove("onMouseOver");
node.Attributes.Remove("onMouseOut");
node.Attributes.Remove("onDoubleClick");
node.Attributes.Remove("onLoad");
node.Attributes.Remove("onUnload");
}
}
// remove any style attributes that contain the word expression (IE evaluates this as script)
nc = doc.DocumentNode.SelectNodes("//*[contains(translate(@style, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'expression')]");
if (nc != null)
{
foreach (HtmlNode node in nc)
{
node.Attributes.Remove("stYle");
}
}
return doc.DocumentNode.WriteTo();
}
के साथ काम आप उपयोग कर सकते हैं एचटीएमएल भागने समारोह यहाँ उल्लेख की कोशिश कर रहा: http://stackoverflow.com/questions/1005264/escape-text-for-html – phsource
वास्तव में आप क्या करने की कोशिश कर रहे हैं ? क्या आप बस उपयोगकर्ता इनपुट को स्वच्छ करने की कोशिश कर रहे हैं, या आप वेब पृष्ठों को स्क्रैप कर रहे हैं? – womp
खतरनाक टैग को स्वच्छ करें लेकिन अकेले बोल्ड और अन्य समृद्ध HTML टैग जैसे HTML टैग छोड़ दें। – chobo2