S3 मूल से अमेज़ॅन क्लाउडफ़ॉरेस्ट पर HSTS


जवाबों:



10

इस पर एक अपडेट ...

HTTP रिस्पांस हेडर को अब लैंबडा @ एज फंक्शंस के जरिए कस्टमाइज किया जा सकता है। कृपया दस्तावेज़ के लिए http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html देखें । इसे आज़माने के लिए, AWS कंसोल में एक नया लंबो फंक्शन बनाएं। भाषा के लिए 'एज Nodge.js 4.3' चुनें और क्लाउडफ्रंट-संशोधित-प्रतिक्रिया-हेडर टेम्पलेट की तलाश करें। यदि आप ऐसा करते हैं, तो लैम्ब्डा आपसे पूछेगा कि कौन सा CloudFront वितरण और ईवेंट को फ़ंक्शन को लागू करने के लिए। ध्यान दें कि आप किसी भी समय क्लाउडफ्रंट व्यवहार टैब पर जाकर इसे संपादित या बदल सकते हैं।

यहां एक उदाहरण लंबोदर समारोह है ...

'use strict';
exports.handler = (event, context, callback) => {

    const response = event.Records[0].cf.response;
    response.headers['Strict-Transport-Security'] = 'max-age=2592000; includeSubDomains';

    callback(null, response);
};

1
महान, इसे बाहर की कोशिश करेंगे!

मैं एक ही लेख भर में ठोकर खाई ... यह तुम्हारे लिए काम किया? @chrisvdb
स्टिवरिनो

@Steverino वास्तव में इसे आज़माने के लिए नहीं आया है, लेकिन जैसा कि हम अभी एक दूसरी स्थैतिक वेबसाइट की स्थापना कर रहे हैं, जो इससे लाभान्वित हो सकती है, हम इसे इस उदाहरण पर आज़मा सकते हैं। मैं उस मामले में वापस रिपोर्ट करूँगा, कृपया ऐसा भी करें। प्रदर्शन प्रभाव को समझने के लिए दिलचस्प होगा।
क्रिस्वडब

1
अपडेट - पता चलता है कि लैंबडा @ एज के वर्तमान पूर्वावलोकन संस्करण में 100 TPS की सीमा हमारी (सरल और कम यातायात) वेबसाइट की मज़बूती से सेवा करने के लिए पर्याप्त नहीं है। कुछ संपत्तियां बेतरतीब ढंग से 50x प्रतिक्रिया कोड देती हैं।
अप्रैल को क्रिसवडब

1
प्रतिक्रिया का प्रारूप। हेडर बदल गए हैं। उपरोक्त अब काम नहीं करता है।
हामिश मोफ़त

4

एंड्रयू के जवाब में जोड़ने के लिए:

मैंने सिर्फ यह और कुछ नोट्स की कोशिश की है: अब कोई विशेष एज नोडज रनटाइम नहीं है, लेकिन लैम्ब्डा को एन वर्जीनिया क्षेत्र में बनाने और क्लाउडफ्रंट मूल-प्रतिक्रिया या दर्शक-प्रतिक्रिया द्वारा ट्रिगर करने की आवश्यकता है ।

बॉक्स से बाहर कोड किसी भी अधिक काम करने के लिए नहीं लगता है। यह ERR_CONTENT_DECODING_FAILED देता है।

समाधान इस प्रकार है कि वाक्यविन्यास का उपयोग किया जाए:

response.headers['Strict-Transport-Security'] = [ { key: 'Strict-Transport-Security', value: "max-age=31536000; includeSubdomains; preload" } ];
response.headers['X-Content-Type-Options']    = [ { key: 'X-Content-Type-Options', value: "nosniff" } ];

यहाँ हेडर के बारे में अधिक जानकारी: infosec.mozilla.org/guidelines/web_security
Josh Habdas

1

सही है, क्योंकि लैंबडा @ एज आमतौर पर उपलब्ध है, उन्होंने इसे एन वर्जीनिया में प्रतिबंधित कर दिया है और एक को नोड 4.3 के बजाय 6.10 चुनना है।

नीचे हमारे कोड का प्रासंगिक हिस्सा (हमारे उद्देश्य के लिए यह हमेशा 302 स्थायी पुनर्निर्देशित होगा):

'use strict';
exports.handler = (event, context, callback) => {

  var request = event.Records[0].cf.request;
  const response = {
    status: '302',
    statusDescription: '302 Found',
    httpVersion: request.httpVersion,
    headers: {
      Location: [
        {
            "key":"Location",
            "value":"someURL"
        }
      ],
      'Strict-Transport-Security': [
        {
          "key":"Strict-Transport-Security",
          "value":'max-age=63072000; includeSubDomains; preload'
        }
      ],
    },
  };
  callback(null, response);
};

CloudFront पर विभिन्न व्यवहारों को कॉन्फ़िगर करके आप सीमित कर सकते हैं कि कौन से अनुरोध लैम्बडा फ़ंक्शन को कॉल करेंगे।


इसका मतलब एडम माशेक के पोस्ट के जवाब के रूप में था ...
क्रिस जूल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.