2012-05-21 4 views
6

संभव डुप्लिकेट:
What's the best method for sanitizing user input with PHP?क्या किसी भी डेटाबेस में सहेजे जा रहे PHP के माध्यम से HTML कोड को साफ करने के लिए वैसे भी है?

मैं का उपयोग करता है एक वेब पेज के एक छोटे से हिस्से को संपादित करने की अनुमति देने के लिए TinyMCE उपयोग कर रहा हूँ।

यह फ़ील्ड डेटाबेस में सहेजा गया है।

वहाँ एक नियमित अभिव्यक्ति मैं छोड़ हमलों की तालिकाएं तरह/तो यह किसी भी XSS/शून्य से बचा जाता है भेजे एचटीएमएल कोड को साफ करने के लिए उपयोग कर सकते है?

मैंने इसे एकल पंक्ति इनपुट टेक्स्ट/संख्या आदि पर किया है, लेकिन यह सुनिश्चित नहीं है कि HTML स्ट्रिंग प्राप्त करते समय इस बारे में कैसे जाना है।

उत्तर

10

मैं HTMLPurifier के साथ खेल की सलाह देते हैं।

+0

धन्यवाद @ raina77ow मैं एक नज़र डालूंगा! – GT22

5

आप PHP कार्यों का उपयोग कर सकते हैं: striptags और htmlspecialchars:

http://php.net/manual/en/function.strip-tags.php

+0

यह HTML TinyMCE द्वारा उत्पादित मिटा देगा। वह एचटीएमएल को अनुमति देना चाहता है लेकिन किसी भी एक्सएसएस खतरों को हटा देना चाहता है। – MrCode

+0

@MrCode सही है। मैं किसी टैग को पट्टी नहीं करना चाहता, बस खतरनाक टैग या जावास्क्रिप्ट को पट्टी करें। – GT22

2

आप इस का उपयोग कर सकते हैं -

function safe_sql($obj) 
{ 
    $obj = htmlspecialchars($obj); 
    $obj = str_replace('"',""",$obj); 
    $obj = str_replace("'","'",$obj); 
    $obj = str_replace("`","`",$obj); 
    $obj = mysql_real_escape_string($obj); 
    return $obj; 
} 

मैं इसे उपयोग कर रहा हूँ और यह ठीक काम कर रहा है। और तुम भी यह सामान्य बनाने के लिए (यदि आप डेटाबेस से डेटा खींचने के बाद) इस सुविधा का उपयोग कर सकते हैं -

function to_Normal($data) 
{ 
    $data = htmlspecialchars_decode($data); 

    $data = str_replace(""",'"',$data); 
    $data = str_replace("'","'",$data); 
    $data = str_replace("`","`",$data); 
    $data = nl2br($data); 
    return $data; 
}