सबसे पहले, टेक्स्ट को तार्किक और साफ रखें:
trim() -- OK
htmlentities($comment, ENT_NOQUOTES) -- No; do later
mysqli_real_escape_string() -- Yes; required by API
nl2br() -- No; see below
उन अनुशंसाओं के पीछे तर्क:डेटाबेस में डेटा केवल सादा डेटा होना चाहिए। htmlइकाइयाँ नहीं, br-टैग नहीं। लेकिन, PHP से MySQL में डेटा पास करने के लिए आपको एस्केप_स्ट्रिंग करना होगा; बचों को संग्रहित नहीं किया जाएगा।
लेकिन... वह केवल बीच का कदम है। डेटा कहां से आया? PHP के पुराने संस्करण "सुरक्षित" करने का प्रयास करते हैं, जिसमें आप एस्केप और अन्य जंक जोड़ रहे हैं जो HTML के लिए ठीक काम करता है, लेकिन MySQL को खराब कर देता है। ऐसे जादू से बचना बंद करें, और कच्चा डेटा प्राप्त करें।
डेटा कहां जाता है? शायद एचटीएमएल? SELECTing
तालिका से डेटा वापस, फिर पहले htmlentities()
do करें और (वैकल्पिक रूप से) nl2br()
;
ध्यान दें, अगर आप <I>
. जैसी चीज़ों को सुरक्षित रखने की उम्मीद कर रहे हैं (इटैलिक के लिए), आप परेशानी मांग रहे हैं - बड़ी परेशानी। एक हैकर को बस इतना करना होता है <script> ...
अपने वेब पेज और संभवत:आपके पूरे सिस्टम में हर तरह की कुटिलता को इंजेक्ट करने के लिए।