Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/modules/brotli/enc/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 3 kB image not shown  

SSL CookieValidation.h   Sprache: unbekannt

 
rahmenlose Ansicht.h DruckansichtUnknown {[0] [0] [0]}Mathematik

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef mozilla_net_CookieValidation_h
#define mozilla_net_CookieValidation_h

#include "nsICookieValidation.h"
#include "Cookie.h"

class nsIConsoleReportCollector;

namespace mozilla {
namespace net {

constexpr auto CONSOLE_CHIPS_CATEGORY = "cookiesCHIPS"_ns;
constexpr auto CONSOLE_OVERSIZE_CATEGORY = "cookiesOversize"_ns;
constexpr auto CONSOLE_REJECTION_CATEGORY = "cookiesRejection"_ns;
constexpr auto CONSOLE_SAMESITE_CATEGORY = "cookieSameSite"_ns;
constexpr auto SAMESITE_MDN_URL =
    "https://developer.mozilla.org/docs/Web/HTTP/Reference/Headers/Set-Cookie#"
    u"samesitesamesite-value"_ns;

class CookieValidation final : public nsICookieValidation {
  NS_DECL_ISUPPORTS
  NS_DECL_NSICOOKIEVALIDATION

 public:
  static already_AddRefed<CookieValidation> Validate(
      const CookieStruct& aCookieData);

  static already_AddRefed<CookieValidation> ValidateForHost(
      const CookieStruct& aCookieData, nsIURI* aHostURI,
      const nsACString& aBaseDomain, bool aRequireHostMatch, bool aFromHttp);

  static already_AddRefed<CookieValidation> ValidateInContext(
      const CookieStruct& aCookieData, nsIURI* aHostURI,
      const nsACString& aBaseDomain, bool aRequireHostMatch, bool aFromHttp,
      bool aIsForeignAndNotAddon, bool aPartitionedOnly,
      bool aIsInPrivateBrowsing);

  static CookieValidation* Cast(nsICookieValidation* aValidation) {
    return static_cast<CookieValidation*>(aValidation);
  }

  nsICookieValidation::ValidationError Result() const { return mResult; }

  void ReportErrorsAndWarnings(nsIConsoleReportCollector* aCRC,
                               nsIURI* aHostURI) const;

 private:
  explicit CookieValidation(const CookieStruct& aCookieData);
  ~CookieValidation() = default;

  void ValidateInternal();

  void ValidateForHostInternal(nsIURI* aHostURI, const nsACString& aBaseDomain,
                               bool aRequireHostMatch, bool aFromHttp);

  void ValidateInContextInternal(nsIURI* aHostURI,
                                 const nsACString& aBaseDomain,
                                 bool aRequireHostMatch, bool aFromHttp,
                                 bool aIsForeignAndNotAddon,
                                 bool aPartitionedOnly,
                                 bool aIsInPrivateBrowsing);

  static bool CheckNameAndValueSize(const CookieStruct& aCookieData);

  static bool CheckName(const CookieStruct& aCookieData);

  static bool CheckValue(const CookieStruct& aCookieData);

  static bool CheckDomain(const CookieStruct& aCookieData, nsIURI* aHostURI,
                          const nsACString& aBaseDomain,
                          bool aRequireHostMatch);

  static bool CheckPrefixes(const CookieStruct& aCookieData,
                            bool aSecureRequest);

  CookieStruct mCookieData;

  nsICookieValidation::ValidationError mResult = eOK;

  void RetrieveErrorLogData(uint32_t* aFlags, nsACString& aCategory,
                            nsACString& aKey,
                            nsTArray<nsString>& aParams) const;

  struct Warnings {
    bool mSameSiteLaxForced = false;
    bool mSameSiteLaxForcedForBeta = false;
    bool mSameSiteNoneRequiresSecureForBeta = false;
  } mWarnings;
};

}  // namespace net
}  // namespace mozilla

#endif  // mozilla_net_CookieValidation_h

[Verzeichnis aufwärts0.43unsichere Verbindung]