2013-06-19 7 views
6

मैं वर्तमान में एक वेबसाइट पर काम कर रहा हूं, जहां उपयोगकर्ता कुछ प्रारूप संभावनाओं (जैसे बोल्ड, इटैलिक, सूची ...) के साथ लेख लिख सकते हैं। मैं एक ढांचा का उपयोग कर रहा हूँ: CodeIgniter।बीबीसीओडी इनपुट और एचटीएमएल आउटपुट के साथ एक्सएसएस से बचें

मैं एक नौसिखिया हूं, और मैंने एक्सएसएस के बारे में कुछ सामान सुना है। मैं जानना चाहता हूं कि आप मेरे कार्यान्वयन के बारे में क्या सोचते हैं। मैंने इस विषय को पढ़ा: What's the best method for sanitizing user input with PHP?

1) उपयोगकर्ता अपना लेख लिखते हैं, इसे बीबीसीओडी के साथ प्रारूपित करते हैं। मैं एससीईडिटर का उपयोग कर रहा हूँ।

2) इसे डेटाबेस में सहेजते समय, मैं किसी भी संदिग्ध HTML टैग को फ़िल्टर करने के लिए htmlspecialchars() का उपयोग कर रहा हूं। क्या मैं डेटा को सहेज रहा हूं, या डेटा प्रदर्शित कर रहा हूं?

3) जब मैं वेबसाइट पर लेख (उदाहरण के लिए अन्य उपयोगों के लिए) प्रदर्शित करना चाहता हूं, तो मैं बीबीसीओडी टैग को एचटीएमएल टैग में परिवर्तित करता हूं।

क्या यह करने का यह सही तरीका है? क्या मैं एक्सएसएस से परहेज कर रहा हूं?

मैं स्पष्ट रूप से सुझावों और सलाहओं के लिए खुला हूं।

http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html

उत्तर

2

Codeigniter के लिए धन्यवाद एक संपत्ति XSS जो उन सभी कर्मचारियों

$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|xss_clean'); 

जांच फ़ॉर्म सत्यापन Codeigniter करना होगा है और "PHP का उपयोग करके प्रतिस्थापित करें, मुझे नहीं लगता कि यह ऐसा करने का सबसे प्रभावी तरीका है।

<?php 
    $malicious = "<script>alert(1)</script>"; 
    $malicious = str_ireplace("<", "", $malicious); 
    $malicious = str_ireplace(">", "", $malicious); 
    echo $malicious; 
?> 
+4

मैंने देखा कि है, लेकिन इस विषय के अनुसार, यह पर्याप्त नहीं है: http://stackoverflow.com/questions/5337143/codeigniter-why-use-xss-clean –

2

मैं "लगता है:

अपने जवाब सत्यापन के लिए

+0

मुझे पता कर रहा हूँ कि यह सवाल पुराना है, लेकिन इसे कुछ विचार मिलते हैं, इसलिए मैंने इस जवाब पर टिप्पणी करने के बारे में सोचा। यह वास्तव में ऐसा करने का एक बुरा तरीका है, उदाहरण के लिए आप अभी भी एक्सएसएस को ऑनलोड-एट्रिब्यूट या कुछ समान में डाल सकते हैं। – 1n9i9c7om

+0

@ 1n9i9c7om के साथ, मैं यह इंगित करना चाहता हूं कि इस विधि के साथ उपयोगकर्ता '<' or '>' चिह्न नहीं डाल सकता जो काफी परेशान हो सकता है। चरित्र को हटाने के बजाय, आप इसके बजाय संबंधित HTML इकाई के साथ प्रतिस्थापित कर सकते हैं: '<' या '>'। –

0
<?php 
$malicious = "<script>alert(1)</script>"; 
$malicious = strip_tags($malicious); 
$malicious = htmlentities($malicious, ENT_QUOTES); 
echo $malicious; 
?> 
संबंधित मुद्दे