GRAYBYTE WORDPRESS FILE MANAGER4739

Server IP : 198.54.121.189 / Your IP : 216.73.216.140
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/hc_python/lib/python3.12/site-packages/sentry_sdk/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/hc_python/lib/python3.12/site-packages/sentry_sdk//scrubber.py
from sentry_sdk.utils import (
    capture_internal_exceptions,
    AnnotatedValue,
    iter_event_frames,
)

from typing import TYPE_CHECKING, cast, List, Dict

if TYPE_CHECKING:
    from sentry_sdk._types import Event
    from typing import Optional


DEFAULT_DENYLIST = [
    # stolen from relay
    "password",
    "passwd",
    "secret",
    "api_key",
    "apikey",
    "auth",
    "credentials",
    "mysql_pwd",
    "privatekey",
    "private_key",
    "token",
    "session",
    # django
    "csrftoken",
    "sessionid",
    # wsgi
    "x_csrftoken",
    "x_forwarded_for",
    "set_cookie",
    "cookie",
    "authorization",
    "x_api_key",
    # other common names used in the wild
    "aiohttp_session",  # aiohttp
    "connect.sid",  # Express
    "csrf_token",  # Pyramid
    "csrf",  # (this is a cookie name used in accepted answers on stack overflow)
    "_csrf",  # Express
    "_csrf_token",  # Bottle
    "PHPSESSID",  # PHP
    "_session",  # Sanic
    "symfony",  # Symfony
    "user_session",  # Vue
    "_xsrf",  # Tornado
    "XSRF-TOKEN",  # Angular, Laravel
]

DEFAULT_PII_DENYLIST = [
    "x_forwarded_for",
    "x_real_ip",
    "ip_address",
    "remote_addr",
]


class EventScrubber:
    def __init__(
        self, denylist=None, recursive=False, send_default_pii=False, pii_denylist=None
    ):
        # type: (Optional[List[str]], bool, bool, Optional[List[str]]) -> None
        """
        A scrubber that goes through the event payload and removes sensitive data configured through denylists.

        :param denylist: A security denylist that is always scrubbed, defaults to DEFAULT_DENYLIST.
        :param recursive: Whether to scrub the event payload recursively, default False.
        :param send_default_pii: Whether pii is sending is on, pii fields are not scrubbed.
        :param pii_denylist: The denylist to use for scrubbing when pii is not sent, defaults to DEFAULT_PII_DENYLIST.
        """
        self.denylist = DEFAULT_DENYLIST.copy() if denylist is None else denylist

        if not send_default_pii:
            pii_denylist = (
                DEFAULT_PII_DENYLIST.copy() if pii_denylist is None else pii_denylist
            )
            self.denylist += pii_denylist

        self.denylist = [x.lower() for x in self.denylist]
        self.recursive = recursive

    def scrub_list(self, lst):
        # type: (object) -> None
        """
        If a list is passed to this method, the method recursively searches the list and any
        nested lists for any dictionaries. The method calls scrub_dict on all dictionaries
        it finds.
        If the parameter passed to this method is not a list, the method does nothing.
        """
        if not isinstance(lst, list):
            return

        for v in lst:
            self.scrub_dict(v)  # no-op unless v is a dict
            self.scrub_list(v)  # no-op unless v is a list

    def scrub_dict(self, d):
        # type: (object) -> None
        """
        If a dictionary is passed to this method, the method scrubs the dictionary of any
        sensitive data. The method calls itself recursively on any nested dictionaries (
        including dictionaries nested in lists) if self.recursive is True.
        This method does nothing if the parameter passed to it is not a dictionary.
        """
        if not isinstance(d, dict):
            return

        for k, v in d.items():
            # The cast is needed because mypy is not smart enough to figure out that k must be a
            # string after the isinstance check.
            if isinstance(k, str) and k.lower() in self.denylist:
                d[k] = AnnotatedValue.substituted_because_contains_sensitive_data()
            elif self.recursive:
                self.scrub_dict(v)  # no-op unless v is a dict
                self.scrub_list(v)  # no-op unless v is a list

    def scrub_request(self, event):
        # type: (Event) -> None
        with capture_internal_exceptions():
            if "request" in event:
                if "headers" in event["request"]:
                    self.scrub_dict(event["request"]["headers"])
                if "cookies" in event["request"]:
                    self.scrub_dict(event["request"]["cookies"])
                if "data" in event["request"]:
                    self.scrub_dict(event["request"]["data"])

    def scrub_extra(self, event):
        # type: (Event) -> None
        with capture_internal_exceptions():
            if "extra" in event:
                self.scrub_dict(event["extra"])

    def scrub_user(self, event):
        # type: (Event) -> None
        with capture_internal_exceptions():
            if "user" in event:
                self.scrub_dict(event["user"])

    def scrub_breadcrumbs(self, event):
        # type: (Event) -> None
        with capture_internal_exceptions():
            if "breadcrumbs" in event:
                if (
                    not isinstance(event["breadcrumbs"], AnnotatedValue)
                    and "values" in event["breadcrumbs"]
                ):
                    for value in event["breadcrumbs"]["values"]:
                        if "data" in value:
                            self.scrub_dict(value["data"])

    def scrub_frames(self, event):
        # type: (Event) -> None
        with capture_internal_exceptions():
            for frame in iter_event_frames(event):
                if "vars" in frame:
                    self.scrub_dict(frame["vars"])

    def scrub_spans(self, event):
        # type: (Event) -> None
        with capture_internal_exceptions():
            if "spans" in event:
                for span in cast(List[Dict[str, object]], event["spans"]):
                    if "data" in span:
                        self.scrub_dict(span["data"])

    def scrub_event(self, event):
        # type: (Event) -> None
        self.scrub_request(event)
        self.scrub_extra(event)
        self.scrub_user(event)
        self.scrub_breadcrumbs(event)
        self.scrub_frames(event)
        self.scrub_spans(event)

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
May 23 2025 08:31:29
root / root
0755
__pycache__
--
May 23 2025 08:31:28
root / root
0755
ai
--
May 23 2025 08:31:28
root / root
0755
crons
--
May 23 2025 08:31:28
root / root
0755
integrations
--
May 23 2025 08:31:28
root / root
0755
profiler
--
May 23 2025 08:31:28
root / root
0755
__init__.py
1.187 KB
May 23 2025 08:31:28
root / root
0644
_compat.py
3.043 KB
May 23 2025 08:31:28
root / root
0644
_init_implementation.py
2.499 KB
May 23 2025 08:31:28
root / root
0644
_log_batcher.py
4.966 KB
May 23 2025 08:31:28
root / root
0644
_lru_cache.py
1.2 KB
May 23 2025 08:31:28
root / root
0644
_queue.py
10.986 KB
May 23 2025 08:31:28
root / root
0644
_types.py
10.217 KB
May 23 2025 08:31:28
root / root
0644
_werkzeug.py
3.646 KB
May 23 2025 08:31:28
root / root
0644
api.py
11.588 KB
May 23 2025 08:31:28
root / root
0644
attachments.py
3.036 KB
May 23 2025 08:31:28
root / root
0644
client.py
37.138 KB
May 23 2025 08:31:28
root / root
0644
consts.py
39.679 KB
May 23 2025 08:31:28
root / root
0644
debug.py
0.995 KB
May 23 2025 08:31:28
root / root
0644
envelope.py
10.112 KB
May 23 2025 08:31:28
root / root
0644
feature_flags.py
2.181 KB
May 23 2025 08:31:28
root / root
0644
hub.py
25.073 KB
May 23 2025 08:31:28
root / root
0644
logger.py
1.617 KB
May 23 2025 08:31:28
root / root
0644
metrics.py
29.212 KB
May 23 2025 08:31:28
root / root
0644
monitor.py
3.623 KB
May 23 2025 08:31:28
root / root
0644
py.typed
0 KB
May 23 2025 08:31:28
root / root
0644
scope.py
61.848 KB
May 23 2025 08:31:28
root / root
0644
scrubber.py
5.922 KB
May 23 2025 08:31:28
root / root
0644
serializer.py
12.78 KB
May 23 2025 08:31:28
root / root
0644
session.py
5.44 KB
May 23 2025 08:31:28
root / root
0644
sessions.py
8.966 KB
May 23 2025 08:31:28
root / root
0644
spotlight.py
8.475 KB
May 23 2025 08:31:28
root / root
0644
tracing.py
46.986 KB
May 23 2025 08:31:28
root / root
0644
tracing_utils.py
28.145 KB
May 23 2025 08:31:28
root / root
0644
transport.py
31.84 KB
May 23 2025 08:31:28
root / root
0644
types.py
1.193 KB
May 23 2025 08:31:28
root / root
0644
utils.py
57.977 KB
May 23 2025 08:31:28
root / root
0644
worker.py
4.359 KB
May 23 2025 08:31:28
root / root
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF