2011-06-11 15 views
14

मैं अनुरोध में X-Forwarded-For शीर्षलेख मान का मान पढ़ना चाहता हूं।एक्स-फॉरवर्डेड-हेडर के लिए

मैं सी # में

HttpContext.Current.Request.Headers["X-Forwarded-For"].Split(new char[] { ',' }).FirstOrDefault(); 

कोशिश की है।

या क्या मुझे ":" द्वारा हेडर को विभाजित करने और दूसरी स्ट्रिंग लेने की आवश्यकता है? मैं इस पूछ रहा हूँ क्योंकि, विकिपीडिया कहते हैं

क्षेत्र के सामान्य प्रारूप है: X-Forwarded-के लिए: client1, proxy1, proxy2

+1

क्या आपने अपना कोड आजमाया है? – svick

+0

मैं वही बात पूछने जा रहा था :) –

+4

आप कोड सही है, सिवाय इसके कि मैं यह करूँगा: HttpContext.Current.Request.Headers ["एक्स-फॉरवर्डेड फॉर"]। स्प्लिट (',')। फर्स्टऑर्डडिफॉल्ट(); – Tsar

उत्तर

15

प्रारूप है कि आप बदले में मिलता है है क्लाइंट 1, प्रॉक्सी 1, प्रॉक्सी 2

तो आप इसे अल्पविराम से विभाजित करते हैं, और अपने क्लाइंट के आईपी को देखने वाले पहले व्यक्ति को प्राप्त करते हैं।

3

भूलें कि एक्स-फॉरवर्डेड-इसमें जो भी क्लाइंट लिखता है वह शामिल हो सकता है। इसमें एक्सएसएस या एसक्यूएल-इंजेक्शन अंदर हो सकता है।

3

तो मदद करता है, यह कभी कभी पहले स्थानीय (निजी) सुरक्षित पतों जो उपयोगी नहीं है में से एक हो सकती है उपयोगकर्ता के आईपी पते हो रही, X_FORWARDED_FOR हैडर

var forwardedFor = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 

var userIpAddress = String.IsNullOrWhiteSpace(forwardedFor) ? 
    Request.ServerVariables["REMOTE_ADDR"] : forwardedFor.Split(',').Select(s => s.Trim()).First(); 
2

पर विचार का एक सरल तरीका है। स्पूफिंग के लिए भी पहली स्थिति खुली है।

नीचे दिया गया उत्तर नीचे से बाएं चलने का सुझाव देता है जब तक कि आप कोई सार्वजनिक पता नहीं दबाते।

https://husobee.github.io/golang/ip-address/2015/12/17/remote-ip-go.html

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

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