2013-12-13 5 views
5

GitHub लेआउट रूपों में से CSRF सुरक्षा के लिए इस तरह के निर्माणों का उपयोग करता है (उदाहरण के लिए मुख्य पृष्ठ पर साइन अप करने के रूप में देखा जा सकता है):फोल्डिंग इनपुट div के साथ छिपा हुआ प्रकार

<div style="margin:0;padding:0;display:inline"> 
    <input type="hidden" value="somerandombase64" name="authenticity_token"> 
</div> 

क्या कारण इनलाइन साथ <input type="hidden" ...> गुना करने के लिए है -स्टाइल <div>? क्या <div> अनावश्यक नहीं है?

उत्तर

2

के रूप में यहां विस्तार से बताया: LINK

रेल 'फॉर्म टैग सहायक काम आते हुए एक प्रामाणिकता टोकन के माध्यम से में एक छिपी हुई फ़ील्ड डालता है। दुर्भाग्यवश, यह छिपे हुए क्षेत्र को एक div में लपेटता है! तो यहां तक ​​कि यदि आपके फॉर्म में शैली = "डिस्प्ले: इनलाइन" है, तो div नहीं होगा .. और आप एक ऐसा फॉर्म प्रदर्शित नहीं कर पाएंगे जो एक नई लाइन को मजबूर नहीं करता है।

दूसरे शब्दों में, एक नई लाइन को रोकने का सबसे सुरक्षित तरीका उन शैलियों को margin:0;padding:0;display:inline रैपर div में जोड़कर है।

+0

'प्रदर्शन: inline' दस्तावेज़ में वर्तमान पंक्ति के तत्व जोड़ देता है। तत्व को ** नई लाइन ** में रखने के लिए ** प्रदर्शन: ब्लॉक' है। यही है ना कृपया अपने उत्तर में तर्क को स्पष्ट करें। –

1

DTD for HTML 4 के अनुसार यह आवश्यक होना [मान्य होना] है। हालांकि इससे कोई फर्क नहीं पड़ता कि form तत्वों के वंशज क्या हैं, प्रत्यक्ष बाल तत्व ब्लॉक-स्तर तत्व होना चाहिए।

और सबूत के लिए W3C Validator Service के खिलाफ इस रन:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
    <title></title> 
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
</head> 
<body> 
    <form action="" method="get"> 
     <input type="hidden"> 
    </form> 
</body> 
</html> 

के रूप में इस का विरोध किया:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
    <title></title> 
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
</head> 
<body> 
    <form action="" method="get"> 
     <div> 
      <input type="hidden"> 
     </div> 
    </form> 
</body> 
</html> 
संबंधित मुद्दे