2016-08-31 24 views
5

मेरी परियोजना में मैं 'से बच' sanitize मूल्य रणनीति के रूप में उपयोग कर रहा हूं। और मैं कुछ जगहों पर अनुवाद निर्देश (विशेषता) का उपयोग कर रहा हूं। कुछ अन्य स्थान मैं अनुवाद फ़िल्टर का उपयोग कर रहा हूँ।कोणीय अनुवाद निर्देश में एक्सएसएस

निर्देशक के साथ :

<span translate="{{vm.text}}"><span> 

यह XSS को vulnarable है। यदि vm.text का मान <script>alert()</script> है, तो स्क्रिप्ट निष्पादित की जाती है और पॉपअप दिखाया जाता है।

फ़िल्टर साथ :

<span>{{vm.text | translate}}<span> 

vm.text का मूल्य बच रहा है और एचटीएमएल वे स्वच्छ मूल्य के रूप में 'भागने' का उपयोग करना चाहिये &lt;script&gt;alert()&lt;/script&gt;

के रूप में दिखाया गया है कोणीय का अनुवाद प्रलेखन (https://angular-translate.github.io/docs/#/guide/19_security) में रणनीति कह रही है 'वर्तमान में sanitize मोड के साथ कोई समस्या है, यह यूटीएफ -8 अक्षरों या विशेष वर्णों को एन्कोड करेगा। अनुशंसा: 'बचें' रणनीति का उपयोग करें, जब तक यह हल नहीं हो जाता '।

क्या इसे निष्पादित किए बिना HTML को <script>alert()</script> के रूप में दिखाने का कोई उचित तरीका है?

+0

मुझे पता चला है कि फिल्टर का उपयोग करते समय यह सही ढंग से निकलता है लेकिन इस तरह के हमले से नहीं बच जाएगा: #/{{{}। ")); चेतावनी (1) //";}} निर्देश का उपयोग करना सही ढंग से बच जाएगा इस प्रकार का हमला लेकिन फिर यह आपके द्वारा वर्णित स्क्रिप्ट हमले पर विफल रहता है। तो मेरे लिए यह अनुवाद पुस्तकालय में एक बड़ा छेद है। – Gurnard

उत्तर

0
फिल्टर (पाइप) के साथ

आप हमेशा तो जैसे तत्वों के लिए बाध्य कर सकता है textContent संपत्ति:

<span [textContent]="vm.text | translate"></span>

कोई मैन्युअल एस्केपिंग या छानने की जरूरत है क्योंकि textContent में कुछ भी नहीं कभी afaik पार्स किया गया है।

+0

कोणीय का कौन सा संस्करण इस के लिए है? – Gurnard

संबंधित मुद्दे