أرغب في استخدام محلل html-reaction-parser لتعقيم وتحليل HTML من نظام إدارة المحتوى الخاص بي. هل يقوم بتعقيم المدخلات من هجمات XSS بشكل فعال؟ https://stackoverflow.com/questions/29044518/safe-alternative-to-dangerouslysetinnerhtml#answer -48261046 يدعي أنه كذلك. إذا كان الأمر كذلك ، أعتقد أنه سيكون من الرائع توثيق / الإعلان عن هذا في مكان ما في README. شكرا لعملك في هذا.
جيد ان تعلم. شكرا على الاستجابة السريعة.
اهلا بك. إذا كان هذا يجيب على سؤالك @ dave-stevens-net ، فهل يمكن إغلاق المشكلة؟
@ dave-stevens-net ربما أخطأت في وقت سابق حول عدم أمان هذه المكتبة لـ XSS.
اعتقدت في الأصل أن هذه المكتبة ليست آمنة لـ XSS لأنه تم الاعتماد على dangerouslySetInnerHTML
هنا .
ومع ذلك ، يبدو أنني غير قادر على إعادة إنتاج أي ثغرات أمنية في XSS. انظر كمانتي ، المبنية على هذا المثال .
اسمحوا لي أن أعرف إذا كان لديك أي حظ في إعادة إنتاج هجمات XSS.
تمكنت من إعادة إنتاج هجوم XSS بسيط. قد يكون هناك المزيد.
تحقق من كماني .
لقد وجدته هنا https://www.in-secure.org/misc/xss/xss.html
انتهى بي الأمر بترميز مكون Sanitize باستخدام تبعية حزمة sanitize-html .
import React from 'react'
import sanitizeHtml from 'sanitize-html'
const Sanitize = ({ html }) => {
const clean = sanitizeHtml(html, {
allowedTags: sanitizeHtml.defaults.allowedTags.concat(['img', 'span']),
allowedAttributes: {
...
},
})
return (
<span
className="sanitized-html"
dangerouslySetInnerHTML={{ __html: clean }}
/>
)
}
export default Sanitize
استخدام المثال:
<Sanitize html={data.wordpressPage.title} />
harveydf العثور على عظيم! شكرا لخلق ومشاركة الكمان.
سأقوم بتحديث README.md
للإشارة إلى أن هذه المكتبة ليست آمنة XSS.
لم أرغب في استخدام sanitize-html ، لأنه ضخم . لقد استخدمت dompurify بدلاً من ذلك ، فهو أصغر بعشر مرات ، ولا يزيل CSS.
import parse, { domToReact } from 'html-react-parser'
import DOMPurify from 'dompurify'
import React from 'react'
// export function replaceNode() {}
export default function html(html, opts = {}) {
return parse(DOMPurify.sanitize(html), {
...{
replace: replaceNode,
},
...opts,
})
}
html('<iframe src=javascript:alert("xss")></iframe>')
التعليق الأكثر فائدة
لم أرغب في استخدام sanitize-html ، لأنه ضخم . لقد استخدمت dompurify بدلاً من ذلك ، فهو أصغر بعشر مرات ، ولا يزيل CSS.
html('<iframe src=javascript:alert("xss")></iframe>')