Plugin Directory

Changeset 3347420


Ignore:
Timestamp:
08/20/2025 09:19:04 AM (8 months ago)
Author:
captchaeu
Message:

Update to version v1.0.62 from GitLab (http://gitlab.krone.at/CAPTCHA/wp-plugin; http://gitlab.krone.at/CAPTCHA/wp-plugin/-/jobs/493495)

Location:
captcha-eu
Files:
6 added
4 deleted
30 edited
1 copied

Legend:

Unmodified
Added
Removed
  • captcha-eu/tags/v1.0.62/.gitlab-ci.yml

    r3185922 r3347420  
    3232  image: php:8.1
    3333  services:
    34     - mysql:8.0
     34    - name: mysql:5.7
     35      alias: mysql
     36      command: ["--default-authentication-plugin=mysql_native_password", "--skip-ssl"]
    3537  variables:
    3638    MYSQL_DATABASE: x1
     
    5254    - composer install --prefer-dist --no-progress
    5355    - chmod +x ./bin/install-wp-tests.sh
     56    - sleep 20
     57    - mysqladmin ping -h mysql -u root -prootpassword --skip-ssl || sleep 10
     58    - mysqladmin ping -h mysql -u root -prootpassword --skip-ssl
    5459  script:
    5560    - ./bin/install-wp-tests.sh wordpress_test_test root rootpassword mysql latest
  • captcha-eu/tags/v1.0.62/assets/js/option-settings.js

    r2906129 r3347420  
    3636                restKey: restKey,
    3737                publicKey: publicKey,
     38                _wpnonce: captcha_at_ajax.nonce,
    3839            },
    3940            success: function(res) {
  • captcha-eu/tags/v1.0.62/bin/install-wp-tests.sh

    r3185922 r3347420  
    128128
    129129    # create database
    130     mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA || true
     130    mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA --skip-ssl || true
    131131}
    132132
  • captcha-eu/tags/v1.0.62/composer.lock

    r3340199 r3347420  
    162162        {
    163163            "name": "antecedent/patchwork",
    164             "version": "2.2.1",
     164            "version": "2.2.2",
    165165            "source": {
    166166                "type": "git",
    167167                "url": "https://github.com/antecedent/patchwork.git",
    168                 "reference": "1bf183a3e1bd094f231a2128b9ecc5363c269245"
    169             },
    170             "dist": {
    171                 "type": "zip",
    172                 "url": "https://api.github.com/repos/antecedent/patchwork/zipball/1bf183a3e1bd094f231a2128b9ecc5363c269245",
    173                 "reference": "1bf183a3e1bd094f231a2128b9ecc5363c269245",
     168                "reference": "724f03c777ddcc436ec2c8ecd4c97cdbceef8ab9"
     169            },
     170            "dist": {
     171                "type": "zip",
     172                "url": "https://api.github.com/repos/antecedent/patchwork/zipball/724f03c777ddcc436ec2c8ecd4c97cdbceef8ab9",
     173                "reference": "724f03c777ddcc436ec2c8ecd4c97cdbceef8ab9",
    174174                "shasum": ""
    175175            },
     
    204204            "support": {
    205205                "issues": "https://github.com/antecedent/patchwork/issues",
    206                 "source": "https://github.com/antecedent/patchwork/tree/2.2.1"
    207             },
    208             "time": "2024-12-11T10:19:54+00:00"
     206                "source": "https://github.com/antecedent/patchwork/tree/2.2.2"
     207            },
     208            "time": "2025-08-12T16:59:40+00:00"
    209209        },
    210210        {
     
    813813        {
    814814            "name": "fidry/cpu-core-counter",
    815             "version": "1.2.0",
     815            "version": "1.3.0",
    816816            "source": {
    817817                "type": "git",
    818818                "url": "https://github.com/theofidry/cpu-core-counter.git",
    819                 "reference": "8520451a140d3f46ac33042715115e290cf5785f"
    820             },
    821             "dist": {
    822                 "type": "zip",
    823                 "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f",
    824                 "reference": "8520451a140d3f46ac33042715115e290cf5785f",
     819                "reference": "db9508f7b1474469d9d3c53b86f817e344732678"
     820            },
     821            "dist": {
     822                "type": "zip",
     823                "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678",
     824                "reference": "db9508f7b1474469d9d3c53b86f817e344732678",
    825825                "shasum": ""
    826826            },
     
    832832                "fidry/php-cs-fixer-config": "^1.1.2",
    833833                "phpstan/extension-installer": "^1.2.0",
    834                 "phpstan/phpstan": "^1.9.2",
    835                 "phpstan/phpstan-deprecation-rules": "^1.0.0",
    836                 "phpstan/phpstan-phpunit": "^1.2.2",
    837                 "phpstan/phpstan-strict-rules": "^1.4.4",
     834                "phpstan/phpstan": "^2.0",
     835                "phpstan/phpstan-deprecation-rules": "^2.0.0",
     836                "phpstan/phpstan-phpunit": "^2.0",
     837                "phpstan/phpstan-strict-rules": "^2.0",
    838838                "phpunit/phpunit": "^8.5.31 || ^9.5.26",
    839839                "webmozarts/strict-phpunit": "^7.5"
     
    862862            "support": {
    863863                "issues": "https://github.com/theofidry/cpu-core-counter/issues",
    864                 "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0"
     864                "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0"
    865865            },
    866866            "funding": [
     
    870870                }
    871871            ],
    872             "time": "2024-08-06T10:04:20+00:00"
     872            "time": "2025-08-14T07:29:31+00:00"
    873873        },
    874874        {
    875875            "name": "friendsofphp/php-cs-fixer",
    876             "version": "v3.85.1",
     876            "version": "v3.86.0",
    877877            "source": {
    878878                "type": "git",
    879879                "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
    880                 "reference": "2fb6d7f6c3398dca5786a1635b27405d73a417ba"
    881             },
    882             "dist": {
    883                 "type": "zip",
    884                 "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/2fb6d7f6c3398dca5786a1635b27405d73a417ba",
    885                 "reference": "2fb6d7f6c3398dca5786a1635b27405d73a417ba",
     880                "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36"
     881            },
     882            "dist": {
     883                "type": "zip",
     884                "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4a952bd19dc97879b0620f495552ef09b55f7d36",
     885                "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36",
    886886                "shasum": ""
    887887            },
     
    967967            "support": {
    968968                "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
    969                 "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.85.1"
     969                "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.86.0"
    970970            },
    971971            "funding": [
     
    975975                }
    976976            ],
    977             "time": "2025-07-29T22:22:50+00:00"
     977            "time": "2025-08-13T22:36:21+00:00"
    978978        },
    979979        {
     
    16641664        {
    16651665            "name": "nikic/php-parser",
    1666             "version": "v5.6.0",
     1666            "version": "v5.6.1",
    16671667            "source": {
    16681668                "type": "git",
    16691669                "url": "https://github.com/nikic/PHP-Parser.git",
    1670                 "reference": "221b0d0fdf1369c71047ad1d18bb5880017bbc56"
    1671             },
    1672             "dist": {
    1673                 "type": "zip",
    1674                 "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/221b0d0fdf1369c71047ad1d18bb5880017bbc56",
    1675                 "reference": "221b0d0fdf1369c71047ad1d18bb5880017bbc56",
     1670                "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2"
     1671            },
     1672            "dist": {
     1673                "type": "zip",
     1674                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
     1675                "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
    16761676                "shasum": ""
    16771677            },
     
    16921692            "extra": {
    16931693                "branch-alias": {
    1694                     "dev-master": "5.0-dev"
     1694                    "dev-master": "5.x-dev"
    16951695                }
    16961696            },
     
    17161716            "support": {
    17171717                "issues": "https://github.com/nikic/PHP-Parser/issues",
    1718                 "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.0"
    1719             },
    1720             "time": "2025-07-27T20:03:57+00:00"
     1718                "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1"
     1719            },
     1720            "time": "2025-08-13T20:13:15+00:00"
    17211721        },
    17221722        {
     
    18401840        {
    18411841            "name": "php-mock/php-mock",
    1842             "version": "2.6.1",
     1842            "version": "2.6.2",
    18431843            "source": {
    18441844                "type": "git",
    18451845                "url": "https://github.com/php-mock/php-mock.git",
    1846                 "reference": "c7b6789056dfc3c45389cabbe9930dc33aeb2bf0"
    1847             },
    1848             "dist": {
    1849                 "type": "zip",
    1850                 "url": "https://api.github.com/repos/php-mock/php-mock/zipball/c7b6789056dfc3c45389cabbe9930dc33aeb2bf0",
    1851                 "reference": "c7b6789056dfc3c45389cabbe9930dc33aeb2bf0",
     1846                "reference": "e134d210e4707c29724ebc7fe50d220123f0fdd9"
     1847            },
     1848            "dist": {
     1849                "type": "zip",
     1850                "url": "https://api.github.com/repos/php-mock/php-mock/zipball/e134d210e4707c29724ebc7fe50d220123f0fdd9",
     1851                "reference": "e134d210e4707c29724ebc7fe50d220123f0fdd9",
    18521852                "shasum": ""
    18531853            },
     
    19041904            "support": {
    19051905                "issues": "https://github.com/php-mock/php-mock/issues",
    1906                 "source": "https://github.com/php-mock/php-mock/tree/2.6.1"
     1906                "source": "https://github.com/php-mock/php-mock/tree/2.6.2"
    19071907            },
    19081908            "funding": [
     
    19121912                }
    19131913            ],
    1914             "time": "2025-02-28T18:11:56+00:00"
     1914            "time": "2025-08-18T19:59:14+00:00"
    19151915        },
    19161916        {
     
    23572357        {
    23582358            "name": "phpunit/phpunit",
    2359             "version": "9.6.23",
     2359            "version": "9.6.24",
    23602360            "source": {
    23612361                "type": "git",
    23622362                "url": "https://github.com/sebastianbergmann/phpunit.git",
    2363                 "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95"
    2364             },
    2365             "dist": {
    2366                 "type": "zip",
    2367                 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/43d2cb18d0675c38bd44982a5d1d88f6d53d8d95",
    2368                 "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95",
     2363                "reference": "ea49afa29aeea25ea7bf9de9fdd7cab163cc0701"
     2364            },
     2365            "dist": {
     2366                "type": "zip",
     2367                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea49afa29aeea25ea7bf9de9fdd7cab163cc0701",
     2368                "reference": "ea49afa29aeea25ea7bf9de9fdd7cab163cc0701",
    23692369                "shasum": ""
    23702370            },
     
    23772377                "ext-xml": "*",
    23782378                "ext-xmlwriter": "*",
    2379                 "myclabs/deep-copy": "^1.13.1",
     2379                "myclabs/deep-copy": "^1.13.4",
    23802380                "phar-io/manifest": "^2.0.4",
    23812381                "phar-io/version": "^3.2.1",
     
    23882388                "sebastian/cli-parser": "^1.0.2",
    23892389                "sebastian/code-unit": "^1.0.8",
    2390                 "sebastian/comparator": "^4.0.8",
     2390                "sebastian/comparator": "^4.0.9",
    23912391                "sebastian/diff": "^4.0.6",
    23922392                "sebastian/environment": "^5.1.5",
    23932393                "sebastian/exporter": "^4.0.6",
    2394                 "sebastian/global-state": "^5.0.7",
     2394                "sebastian/global-state": "^5.0.8",
    23952395                "sebastian/object-enumerator": "^4.0.4",
    23962396                "sebastian/resource-operations": "^3.0.4",
     
    24402440                "issues": "https://github.com/sebastianbergmann/phpunit/issues",
    24412441                "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
    2442                 "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.23"
     2442                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.24"
    24432443            },
    24442444            "funding": [
     
    24642464                }
    24652465            ],
    2466             "time": "2025-05-02T06:40:34+00:00"
     2466            "time": "2025-08-10T08:32:42+00:00"
    24672467        },
    24682468        {
     
    31153115        {
    31163116            "name": "react/promise",
    3117             "version": "v3.2.0",
     3117            "version": "v3.3.0",
    31183118            "source": {
    31193119                "type": "git",
    31203120                "url": "https://github.com/reactphp/promise.git",
    3121                 "reference": "8a164643313c71354582dc850b42b33fa12a4b63"
    3122             },
    3123             "dist": {
    3124                 "type": "zip",
    3125                 "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63",
    3126                 "reference": "8a164643313c71354582dc850b42b33fa12a4b63",
     3121                "reference": "23444f53a813a3296c1368bb104793ce8d88f04a"
     3122            },
     3123            "dist": {
     3124                "type": "zip",
     3125                "url": "https://api.github.com/repos/reactphp/promise/zipball/23444f53a813a3296c1368bb104793ce8d88f04a",
     3126                "reference": "23444f53a813a3296c1368bb104793ce8d88f04a",
    31273127                "shasum": ""
    31283128            },
     
    31313131            },
    31323132            "require-dev": {
    3133                 "phpstan/phpstan": "1.10.39 || 1.4.10",
     3133                "phpstan/phpstan": "1.12.28 || 1.4.10",
    31343134                "phpunit/phpunit": "^9.6 || ^7.5"
    31353135            },
     
    31763176            "support": {
    31773177                "issues": "https://github.com/reactphp/promise/issues",
    3178                 "source": "https://github.com/reactphp/promise/tree/v3.2.0"
     3178                "source": "https://github.com/reactphp/promise/tree/v3.3.0"
    31793179            },
    31803180            "funding": [
     
    31843184                }
    31853185            ],
    3186             "time": "2024-05-24T10:39:05+00:00"
     3186            "time": "2025-08-19T18:57:03+00:00"
    31873187        },
    31883188        {
     
    35583558        {
    35593559            "name": "sebastian/comparator",
    3560             "version": "4.0.8",
     3560            "version": "4.0.9",
    35613561            "source": {
    35623562                "type": "git",
    35633563                "url": "https://github.com/sebastianbergmann/comparator.git",
    3564                 "reference": "fa0f136dd2334583309d32b62544682ee972b51a"
    3565             },
    3566             "dist": {
    3567                 "type": "zip",
    3568                 "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
    3569                 "reference": "fa0f136dd2334583309d32b62544682ee972b51a",
     3564                "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5"
     3565            },
     3566            "dist": {
     3567                "type": "zip",
     3568                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/67a2df3a62639eab2cc5906065e9805d4fd5dfc5",
     3569                "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5",
    35703570                "shasum": ""
    35713571            },
     
    36203620            "support": {
    36213621                "issues": "https://github.com/sebastianbergmann/comparator/issues",
    3622                 "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
     3622                "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.9"
    36233623            },
    36243624            "funding": [
     
    36263626                    "url": "https://github.com/sebastianbergmann",
    36273627                    "type": "github"
    3628                 }
    3629             ],
    3630             "time": "2022-09-14T12:41:17+00:00"
     3628                },
     3629                {
     3630                    "url": "https://liberapay.com/sebastianbergmann",
     3631                    "type": "liberapay"
     3632                },
     3633                {
     3634                    "url": "https://thanks.dev/u/gh/sebastianbergmann",
     3635                    "type": "thanks_dev"
     3636                },
     3637                {
     3638                    "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator",
     3639                    "type": "tidelift"
     3640                }
     3641            ],
     3642            "time": "2025-08-10T06:51:50+00:00"
    36313643        },
    36323644        {
     
    38953907        {
    38963908            "name": "sebastian/global-state",
    3897             "version": "5.0.7",
     3909            "version": "5.0.8",
    38983910            "source": {
    38993911                "type": "git",
    39003912                "url": "https://github.com/sebastianbergmann/global-state.git",
    3901                 "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9"
    3902             },
    3903             "dist": {
    3904                 "type": "zip",
    3905                 "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
    3906                 "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
     3913                "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6"
     3914            },
     3915            "dist": {
     3916                "type": "zip",
     3917                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b6781316bdcd28260904e7cc18ec983d0d2ef4f6",
     3918                "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6",
    39073919                "shasum": ""
    39083920            },
     
    39473959            "support": {
    39483960                "issues": "https://github.com/sebastianbergmann/global-state/issues",
    3949                 "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7"
     3961                "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.8"
    39503962            },
    39513963            "funding": [
     
    39533965                    "url": "https://github.com/sebastianbergmann",
    39543966                    "type": "github"
    3955                 }
    3956             ],
    3957             "time": "2024-03-02T06:35:11+00:00"
     3967                },
     3968                {
     3969                    "url": "https://liberapay.com/sebastianbergmann",
     3970                    "type": "liberapay"
     3971                },
     3972                {
     3973                    "url": "https://thanks.dev/u/gh/sebastianbergmann",
     3974                    "type": "thanks_dev"
     3975                },
     3976                {
     3977                    "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state",
     3978                    "type": "tidelift"
     3979                }
     3980            ],
     3981            "time": "2025-08-10T07:10:35+00:00"
    39583982        },
    39593983        {
     
    41284152        {
    41294153            "name": "sebastian/recursion-context",
    4130             "version": "4.0.5",
     4154            "version": "4.0.6",
    41314155            "source": {
    41324156                "type": "git",
    41334157                "url": "https://github.com/sebastianbergmann/recursion-context.git",
    4134                 "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1"
    4135             },
    4136             "dist": {
    4137                 "type": "zip",
    4138                 "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
    4139                 "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
     4158                "reference": "539c6691e0623af6dc6f9c20384c120f963465a0"
     4159            },
     4160            "dist": {
     4161                "type": "zip",
     4162                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/539c6691e0623af6dc6f9c20384c120f963465a0",
     4163                "reference": "539c6691e0623af6dc6f9c20384c120f963465a0",
    41404164                "shasum": ""
    41414165            },
     
    41794203            "support": {
    41804204                "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
    4181                 "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5"
     4205                "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.6"
    41824206            },
    41834207            "funding": [
     
    41854209                    "url": "https://github.com/sebastianbergmann",
    41864210                    "type": "github"
    4187                 }
    4188             ],
    4189             "time": "2023-02-03T06:07:39+00:00"
     4211                },
     4212                {
     4213                    "url": "https://liberapay.com/sebastianbergmann",
     4214                    "type": "liberapay"
     4215                },
     4216                {
     4217                    "url": "https://thanks.dev/u/gh/sebastianbergmann",
     4218                    "type": "thanks_dev"
     4219                },
     4220                {
     4221                    "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context",
     4222                    "type": "tidelift"
     4223                }
     4224            ],
     4225            "time": "2025-08-10T06:57:39+00:00"
    41904226        },
    41914227        {
     
    48834919        {
    48844920            "name": "symfony/polyfill-ctype",
    4885             "version": "v1.32.0",
     4921            "version": "v1.33.0",
    48864922            "source": {
    48874923                "type": "git",
     
    49424978            ],
    49434979            "support": {
    4944                 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0"
     4980                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
    49454981            },
    49464982            "funding": [
     
    49544990                },
    49554991                {
     4992                    "url": "https://github.com/nicolas-grekas",
     4993                    "type": "github"
     4994                },
     4995                {
    49564996                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    49574997                    "type": "tidelift"
     
    49625002        {
    49635003            "name": "symfony/polyfill-intl-grapheme",
    4964             "version": "v1.32.0",
     5004            "version": "v1.33.0",
    49655005            "source": {
    49665006                "type": "git",
    49675007                "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
    4968                 "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
    4969             },
    4970             "dist": {
    4971                 "type": "zip",
    4972                 "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
    4973                 "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
     5008                "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70"
     5009            },
     5010            "dist": {
     5011                "type": "zip",
     5012                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70",
     5013                "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70",
    49745014                "shasum": ""
    49755015            },
     
    50205060            ],
    50215061            "support": {
    5022                 "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0"
     5062                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0"
    50235063            },
    50245064            "funding": [
     
    50325072                },
    50335073                {
     5074                    "url": "https://github.com/nicolas-grekas",
     5075                    "type": "github"
     5076                },
     5077                {
    50345078                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    50355079                    "type": "tidelift"
    50365080                }
    50375081            ],
    5038             "time": "2024-09-09T11:45:10+00:00"
     5082            "time": "2025-06-27T09:58:17+00:00"
    50395083        },
    50405084        {
    50415085            "name": "symfony/polyfill-intl-normalizer",
    5042             "version": "v1.32.0",
     5086            "version": "v1.33.0",
    50435087            "source": {
    50445088                "type": "git",
     
    51015145            ],
    51025146            "support": {
    5103                 "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0"
     5147                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0"
    51045148            },
    51055149            "funding": [
     
    51135157                },
    51145158                {
     5159                    "url": "https://github.com/nicolas-grekas",
     5160                    "type": "github"
     5161                },
     5162                {
    51155163                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    51165164                    "type": "tidelift"
     
    51215169        {
    51225170            "name": "symfony/polyfill-mbstring",
    5123             "version": "v1.32.0",
     5171            "version": "v1.33.0",
    51245172            "source": {
    51255173                "type": "git",
     
    51825230            ],
    51835231            "support": {
    5184                 "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0"
     5232                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
    51855233            },
    51865234            "funding": [
     
    51945242                },
    51955243                {
     5244                    "url": "https://github.com/nicolas-grekas",
     5245                    "type": "github"
     5246                },
     5247                {
    51965248                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    51975249                    "type": "tidelift"
     
    52025254        {
    52035255            "name": "symfony/polyfill-php73",
    5204             "version": "v1.32.0",
     5256            "version": "v1.33.0",
    52055257            "source": {
    52065258                "type": "git",
     
    52585310            ],
    52595311            "support": {
    5260                 "source": "https://github.com/symfony/polyfill-php73/tree/v1.32.0"
     5312                "source": "https://github.com/symfony/polyfill-php73/tree/v1.33.0"
    52615313            },
    52625314            "funding": [
     
    52705322                },
    52715323                {
     5324                    "url": "https://github.com/nicolas-grekas",
     5325                    "type": "github"
     5326                },
     5327                {
    52725328                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    52735329                    "type": "tidelift"
     
    52785334        {
    52795335            "name": "symfony/polyfill-php80",
    5280             "version": "v1.32.0",
     5336            "version": "v1.33.0",
    52815337            "source": {
    52825338                "type": "git",
     
    53385394            ],
    53395395            "support": {
    5340                 "source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0"
     5396                "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0"
    53415397            },
    53425398            "funding": [
     
    53505406                },
    53515407                {
     5408                    "url": "https://github.com/nicolas-grekas",
     5409                    "type": "github"
     5410                },
     5411                {
    53525412                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    53535413                    "type": "tidelift"
     
    53585418        {
    53595419            "name": "symfony/polyfill-php81",
    5360             "version": "v1.32.0",
     5420            "version": "v1.33.0",
    53615421            "source": {
    53625422                "type": "git",
     
    54145474            ],
    54155475            "support": {
    5416                 "source": "https://github.com/symfony/polyfill-php81/tree/v1.32.0"
     5476                "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0"
    54175477            },
    54185478            "funding": [
     
    54235483                {
    54245484                    "url": "https://github.com/fabpot",
     5485                    "type": "github"
     5486                },
     5487                {
     5488                    "url": "https://github.com/nicolas-grekas",
    54255489                    "type": "github"
    54265490                },
     
    57775841        {
    57785842            "name": "yoast/phpunit-polyfills",
    5779             "version": "1.1.4",
     5843            "version": "1.1.5",
    57805844            "source": {
    57815845                "type": "git",
    57825846                "url": "https://github.com/Yoast/PHPUnit-Polyfills.git",
    5783                 "reference": "e6faedf5e34cea4438e341f660e2f719760c531d"
    5784             },
    5785             "dist": {
    5786                 "type": "zip",
    5787                 "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/e6faedf5e34cea4438e341f660e2f719760c531d",
    5788                 "reference": "e6faedf5e34cea4438e341f660e2f719760c531d",
     5847                "reference": "41aaac462fbd80feb8dd129e489f4bbc53fe26b0"
     5848            },
     5849            "dist": {
     5850                "type": "zip",
     5851                "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/41aaac462fbd80feb8dd129e489f4bbc53fe26b0",
     5852                "reference": "41aaac462fbd80feb8dd129e489f4bbc53fe26b0",
    57895853                "shasum": ""
    57905854            },
     
    57965860                "php-parallel-lint/php-console-highlighter": "^1.0.0",
    57975861                "php-parallel-lint/php-parallel-lint": "^1.4.0",
    5798                 "yoast/yoastcs": "^3.1.0"
     5862                "yoast/yoastcs": "^3.2.0"
    57995863            },
    58005864            "type": "library",
     
    58365900                "source": "https://github.com/Yoast/PHPUnit-Polyfills"
    58375901            },
    5838             "time": "2025-02-09T18:13:44+00:00"
     5902            "time": "2025-08-10T04:54:36+00:00"
    58395903        }
    58405904    ],
  • captcha-eu/tags/v1.0.62/readme.txt

    r3340205 r3347420  
    55Tested up to: 6.7
    66Requires PHP: 7.0
    7 Stable tag: 1.0.61
     7Stable tag: 1.0.62
    88License: GPL
    99License URI: https://opensource.org/license/gpl/
  • captcha-eu/tags/v1.0.62/src/Admin.php

    r3340205 r3347420  
    189189            // check if option proxy_enabled set => update sdk.js content
    190190            if ($proxyForce || get_option('captcha_at_proxy_enabled')) {
    191                 // sdk.js url
    192                 global $wp_version;
    193                 $sdkUrl = add_query_arg(['wpv' => $wp_version], $this->endpoint . '/sdk.js');
    194 
    195                 // fetch sdk.js from endpoint
    196                 $sdkJSContent = file_get_contents($sdkUrl);
    197 
    198                 if ('' != $sdkJSContent) {
    199                     // save sdk.js content to option
    200                     update_option('captcha_at_proxy_sdkjs_content', $sdkJSContent);
    201                     // set last sdk.js update timestamp
    202                     update_option('captcha_at_proxy_sdkjs_updated_at', time());
     191                // Validate endpoint URL to prevent SSRF
     192                if ($this->isValidCaptchaHost($this->endpoint)) {
     193                    // sdk.js url
     194                    global $wp_version;
     195                    $sdkUrl = add_query_arg(['wpv' => $wp_version], $this->endpoint . '/sdk.js');
     196
     197                    // Use wp_safe_remote_get instead of file_get_contents for security
     198                    $response = wp_safe_remote_get($sdkUrl, [
     199                        'timeout' => 10,
     200                        'redirection' => 0,
     201                    ]);
     202
     203                    if (!is_wp_error($response)) {
     204                        $sdkJSContent = wp_remote_retrieve_body($response);
     205                       
     206                        if ('' != $sdkJSContent) {
     207                            // save sdk.js content to option
     208                            update_option('captcha_at_proxy_sdkjs_content', $sdkJSContent);
     209                            // set last sdk.js update timestamp
     210                            update_option('captcha_at_proxy_sdkjs_updated_at', time());
     211                        }
     212                    }
    203213                }
    204214            }
     
    828838        if ('captcha_page_captcha-eu-settings' == $screen->base) {
    829839            wp_enqueue_script('captcha_admin_script', $this->plugin_dir_url . 'assets/js/option-settings.js', ['jquery'], '1.0');
     840           
     841            // Localize script with nonce for security
     842            wp_localize_script('captcha_admin_script', 'captcha_at_ajax', [
     843                'nonce' => wp_create_nonce('captcha_at_check_settings_nonce'),
     844            ]);
    830845        }
    831846    }
     
    833848    public function captcha_at_check_settings()
    834849    {
     850        // Verify nonce for CSRF protection
     851        if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'captcha_at_check_settings_nonce')) {
     852            wp_send_json_error([
     853                'notice' => $this->core->options->panelMSG('error', __('Security check failed', 'captcha-eu')),
     854            ]);
     855            return;
     856        }
     857       
    835858        // Allow only authenticated admins to check settings
    836         if (!is_admin() && !current_user_can('manage_options')) {
     859        if (!current_user_can('manage_options')) {
    837860            wp_send_json_error([
    838861                'notice' => $this->core->options->panelMSG('error', __('Unauthorized access', 'captcha-eu')),
     
    13591382    public function apiFetchLatestVersion()
    13601383    {
    1361         // fetch asset version info route
    1362         $data = wp_remote_get($this->endpoint . '/version?t=' . time(), [
     1384        // Validate endpoint URL to prevent SSRF
     1385        if (!$this->isValidCaptchaHost($this->endpoint)) {
     1386            return false;
     1387        }
     1388       
     1389        // Use wp_safe_remote_get to prevent SSRF attacks
     1390        $data = wp_safe_remote_get($this->endpoint . '/version?t=' . time(), [
    13631391            'headers' => ['Content-Type' => 'application/json', 'User-Agent' => 'Captcha'],
     1392            'timeout' => 10,
     1393            'redirection' => 0, // Prevent following redirects
    13641394        ]);
    13651395
     
    13901420    }
    13911421
     1422    private function isValidCaptchaHost($host)
     1423    {
     1424        // Sanitize and validate the host URL
     1425        $host = sanitize_url($host);
     1426       
     1427        if (empty($host)) {
     1428            return false;
     1429        }
     1430       
     1431        // Parse the URL
     1432        $parsed_url = wp_parse_url($host);
     1433       
     1434        if (!$parsed_url || !isset($parsed_url['host'])) {
     1435            return false;
     1436        }
     1437       
     1438        $hostname = strtolower($parsed_url['host']);
     1439       
     1440        // Check if the host matches allowed patterns for captcha.eu and captcha.at domains
     1441        // Patterns allow:
     1442        // - *.captcha.eu (e.g., www.captcha.eu, at.captcha.eu, w19.captcha.eu)
     1443        // - *.captcha.at (e.g., www.captcha.at, w19.captcha.at)
     1444        // - captcha.eu
     1445        // - captcha.at
     1446        $allowed_patterns = [
     1447            '/^(.*\.)?captcha\.eu$/',
     1448            '/^(.*\.)?captcha\.at$/',
     1449        ];
     1450       
     1451        $is_allowed = false;
     1452        foreach ($allowed_patterns as $pattern) {
     1453            if (preg_match($pattern, $hostname)) {
     1454                $is_allowed = true;
     1455                break;
     1456            }
     1457        }
     1458       
     1459        if (!$is_allowed) {
     1460            return false;
     1461        }
     1462       
     1463        // Only allow HTTPS connections
     1464        if (!isset($parsed_url['scheme']) || $parsed_url['scheme'] !== 'https') {
     1465            return false;
     1466        }
     1467       
     1468        return true;
     1469    }
     1470
    13921471    public function apiFetchPersonal($host = '', $restKey = '')
    13931472    {
    1394         // fetch personal info route
    1395         $data = wp_remote_get($host . '/api/personal', [
     1473        // Validate host URL to prevent SSRF
     1474        if (!$this->isValidCaptchaHost($host)) {
     1475            return false;
     1476        }
     1477       
     1478        // Use wp_safe_remote_get to prevent SSRF attacks
     1479        // This function blocks requests to private and local IP addresses
     1480        $data = wp_safe_remote_get($host . '/api/personal', [
    13961481            'headers' => ['Content-Type' => 'application/json', 'Rest-Key' => $restKey, 'User-Agent' => 'Captcha'],
     1482            'timeout' => 10,
     1483            'redirection' => 0, // Prevent following redirects
    13971484        ]);
    13981485
  • captcha-eu/tags/v1.0.62/vendor/autoload.php

    r3340205 r3347420  
    2323require_once __DIR__ . '/composer/autoload_real.php';
    2424
    25 return ComposerAutoloaderInit8abf7280a8e72bf2e1071644df96ee2d::getLoader();
     25return ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c::getLoader();
  • captcha-eu/tags/v1.0.62/vendor/composer/autoload_real.php

    r3340205 r3347420  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit8abf7280a8e72bf2e1071644df96ee2d
     5class ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInit8abf7280a8e72bf2e1071644df96ee2d', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderInit8abf7280a8e72bf2e1071644df96ee2d', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticInit8abf7280a8e72bf2e1071644df96ee2d::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::getInitializer($loader));
    3333
    3434        $loader->register(true);
  • captcha-eu/tags/v1.0.62/vendor/composer/autoload_static.php

    r3340205 r3347420  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit8abf7280a8e72bf2e1071644df96ee2d
     7class ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c
    88{
    99    public static $prefixLengthsPsr4 = array (
     
    3434    {
    3535        return \Closure::bind(function () use ($loader) {
    36             $loader->prefixLengthsPsr4 = ComposerStaticInit8abf7280a8e72bf2e1071644df96ee2d::$prefixLengthsPsr4;
    37             $loader->prefixDirsPsr4 = ComposerStaticInit8abf7280a8e72bf2e1071644df96ee2d::$prefixDirsPsr4;
    38             $loader->classMap = ComposerStaticInit8abf7280a8e72bf2e1071644df96ee2d::$classMap;
     36            $loader->prefixLengthsPsr4 = ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::$prefixLengthsPsr4;
     37            $loader->prefixDirsPsr4 = ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::$prefixDirsPsr4;
     38            $loader->classMap = ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::$classMap;
    3939
    4040        }, null, ClassLoader::class);
  • captcha-eu/tags/v1.0.62/vendor/composer/installers/.git/logs/HEAD

    r3340205 r3347420  
    1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1754469875 +0000   clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/
    2 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 d20a64ed3c94748397ff5973488761b22f6d3f19 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1754469875 +0000   checkout: moving from main to v1.12.0
     10000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000   clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/
     25b390889ecbb17bfa69ed5a030fa2e6075a19ba0 d20a64ed3c94748397ff5973488761b22f6d3f19 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000   checkout: moving from main to v1.12.0
  • captcha-eu/tags/v1.0.62/vendor/composer/installers/.git/logs/refs/heads/main

    r3340205 r3347420  
    1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1754469875 +0000   clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/
     10000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000   clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/
  • captcha-eu/tags/v1.0.62/vendor/composer/installers/.git/logs/refs/remotes/origin/HEAD

    r3340205 r3347420  
    1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1754469875 +0000   clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/
     10000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000   clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/
  • captcha-eu/tags/v1.0.62/vendor/composer/installers/.git/objects/info/packs

    r3340205 r3347420  
    1 P pack-c8323075ac8f3d5b632c113f9a8b003d76f2ef04.pack
     1P pack-d5163848cabfa76e781dca05937c97e4aadfebf6.pack
    22
  • captcha-eu/tags/v1.0.62/wp-captcha.php

    r3340205 r3347420  
    44 * Description: Captcha.eu provides a GDPR compliant protection against bots and spammers.
    55 * Plugin URI:  https://www.captcha.eu
    6  * Version:     1.0.61
     6 * Version:     1.0.62
    77 * Author:      captchaeu
    88 * Author URI:  https://profiles.wordpress.org/captchaeu/
  • captcha-eu/trunk/.gitlab-ci.yml

    r3185922 r3347420  
    3232  image: php:8.1
    3333  services:
    34     - mysql:8.0
     34    - name: mysql:5.7
     35      alias: mysql
     36      command: ["--default-authentication-plugin=mysql_native_password", "--skip-ssl"]
    3537  variables:
    3638    MYSQL_DATABASE: x1
     
    5254    - composer install --prefer-dist --no-progress
    5355    - chmod +x ./bin/install-wp-tests.sh
     56    - sleep 20
     57    - mysqladmin ping -h mysql -u root -prootpassword --skip-ssl || sleep 10
     58    - mysqladmin ping -h mysql -u root -prootpassword --skip-ssl
    5459  script:
    5560    - ./bin/install-wp-tests.sh wordpress_test_test root rootpassword mysql latest
  • captcha-eu/trunk/assets/js/option-settings.js

    r2906129 r3347420  
    3636                restKey: restKey,
    3737                publicKey: publicKey,
     38                _wpnonce: captcha_at_ajax.nonce,
    3839            },
    3940            success: function(res) {
  • captcha-eu/trunk/bin/install-wp-tests.sh

    r3185922 r3347420  
    128128
    129129    # create database
    130     mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA || true
     130    mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA --skip-ssl || true
    131131}
    132132
  • captcha-eu/trunk/composer.lock

    r3340199 r3347420  
    162162        {
    163163            "name": "antecedent/patchwork",
    164             "version": "2.2.1",
     164            "version": "2.2.2",
    165165            "source": {
    166166                "type": "git",
    167167                "url": "https://github.com/antecedent/patchwork.git",
    168                 "reference": "1bf183a3e1bd094f231a2128b9ecc5363c269245"
    169             },
    170             "dist": {
    171                 "type": "zip",
    172                 "url": "https://api.github.com/repos/antecedent/patchwork/zipball/1bf183a3e1bd094f231a2128b9ecc5363c269245",
    173                 "reference": "1bf183a3e1bd094f231a2128b9ecc5363c269245",
     168                "reference": "724f03c777ddcc436ec2c8ecd4c97cdbceef8ab9"
     169            },
     170            "dist": {
     171                "type": "zip",
     172                "url": "https://api.github.com/repos/antecedent/patchwork/zipball/724f03c777ddcc436ec2c8ecd4c97cdbceef8ab9",
     173                "reference": "724f03c777ddcc436ec2c8ecd4c97cdbceef8ab9",
    174174                "shasum": ""
    175175            },
     
    204204            "support": {
    205205                "issues": "https://github.com/antecedent/patchwork/issues",
    206                 "source": "https://github.com/antecedent/patchwork/tree/2.2.1"
    207             },
    208             "time": "2024-12-11T10:19:54+00:00"
     206                "source": "https://github.com/antecedent/patchwork/tree/2.2.2"
     207            },
     208            "time": "2025-08-12T16:59:40+00:00"
    209209        },
    210210        {
     
    813813        {
    814814            "name": "fidry/cpu-core-counter",
    815             "version": "1.2.0",
     815            "version": "1.3.0",
    816816            "source": {
    817817                "type": "git",
    818818                "url": "https://github.com/theofidry/cpu-core-counter.git",
    819                 "reference": "8520451a140d3f46ac33042715115e290cf5785f"
    820             },
    821             "dist": {
    822                 "type": "zip",
    823                 "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f",
    824                 "reference": "8520451a140d3f46ac33042715115e290cf5785f",
     819                "reference": "db9508f7b1474469d9d3c53b86f817e344732678"
     820            },
     821            "dist": {
     822                "type": "zip",
     823                "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678",
     824                "reference": "db9508f7b1474469d9d3c53b86f817e344732678",
    825825                "shasum": ""
    826826            },
     
    832832                "fidry/php-cs-fixer-config": "^1.1.2",
    833833                "phpstan/extension-installer": "^1.2.0",
    834                 "phpstan/phpstan": "^1.9.2",
    835                 "phpstan/phpstan-deprecation-rules": "^1.0.0",
    836                 "phpstan/phpstan-phpunit": "^1.2.2",
    837                 "phpstan/phpstan-strict-rules": "^1.4.4",
     834                "phpstan/phpstan": "^2.0",
     835                "phpstan/phpstan-deprecation-rules": "^2.0.0",
     836                "phpstan/phpstan-phpunit": "^2.0",
     837                "phpstan/phpstan-strict-rules": "^2.0",
    838838                "phpunit/phpunit": "^8.5.31 || ^9.5.26",
    839839                "webmozarts/strict-phpunit": "^7.5"
     
    862862            "support": {
    863863                "issues": "https://github.com/theofidry/cpu-core-counter/issues",
    864                 "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0"
     864                "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0"
    865865            },
    866866            "funding": [
     
    870870                }
    871871            ],
    872             "time": "2024-08-06T10:04:20+00:00"
     872            "time": "2025-08-14T07:29:31+00:00"
    873873        },
    874874        {
    875875            "name": "friendsofphp/php-cs-fixer",
    876             "version": "v3.85.1",
     876            "version": "v3.86.0",
    877877            "source": {
    878878                "type": "git",
    879879                "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
    880                 "reference": "2fb6d7f6c3398dca5786a1635b27405d73a417ba"
    881             },
    882             "dist": {
    883                 "type": "zip",
    884                 "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/2fb6d7f6c3398dca5786a1635b27405d73a417ba",
    885                 "reference": "2fb6d7f6c3398dca5786a1635b27405d73a417ba",
     880                "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36"
     881            },
     882            "dist": {
     883                "type": "zip",
     884                "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4a952bd19dc97879b0620f495552ef09b55f7d36",
     885                "reference": "4a952bd19dc97879b0620f495552ef09b55f7d36",
    886886                "shasum": ""
    887887            },
     
    967967            "support": {
    968968                "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
    969                 "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.85.1"
     969                "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.86.0"
    970970            },
    971971            "funding": [
     
    975975                }
    976976            ],
    977             "time": "2025-07-29T22:22:50+00:00"
     977            "time": "2025-08-13T22:36:21+00:00"
    978978        },
    979979        {
     
    16641664        {
    16651665            "name": "nikic/php-parser",
    1666             "version": "v5.6.0",
     1666            "version": "v5.6.1",
    16671667            "source": {
    16681668                "type": "git",
    16691669                "url": "https://github.com/nikic/PHP-Parser.git",
    1670                 "reference": "221b0d0fdf1369c71047ad1d18bb5880017bbc56"
    1671             },
    1672             "dist": {
    1673                 "type": "zip",
    1674                 "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/221b0d0fdf1369c71047ad1d18bb5880017bbc56",
    1675                 "reference": "221b0d0fdf1369c71047ad1d18bb5880017bbc56",
     1670                "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2"
     1671            },
     1672            "dist": {
     1673                "type": "zip",
     1674                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
     1675                "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
    16761676                "shasum": ""
    16771677            },
     
    16921692            "extra": {
    16931693                "branch-alias": {
    1694                     "dev-master": "5.0-dev"
     1694                    "dev-master": "5.x-dev"
    16951695                }
    16961696            },
     
    17161716            "support": {
    17171717                "issues": "https://github.com/nikic/PHP-Parser/issues",
    1718                 "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.0"
    1719             },
    1720             "time": "2025-07-27T20:03:57+00:00"
     1718                "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1"
     1719            },
     1720            "time": "2025-08-13T20:13:15+00:00"
    17211721        },
    17221722        {
     
    18401840        {
    18411841            "name": "php-mock/php-mock",
    1842             "version": "2.6.1",
     1842            "version": "2.6.2",
    18431843            "source": {
    18441844                "type": "git",
    18451845                "url": "https://github.com/php-mock/php-mock.git",
    1846                 "reference": "c7b6789056dfc3c45389cabbe9930dc33aeb2bf0"
    1847             },
    1848             "dist": {
    1849                 "type": "zip",
    1850                 "url": "https://api.github.com/repos/php-mock/php-mock/zipball/c7b6789056dfc3c45389cabbe9930dc33aeb2bf0",
    1851                 "reference": "c7b6789056dfc3c45389cabbe9930dc33aeb2bf0",
     1846                "reference": "e134d210e4707c29724ebc7fe50d220123f0fdd9"
     1847            },
     1848            "dist": {
     1849                "type": "zip",
     1850                "url": "https://api.github.com/repos/php-mock/php-mock/zipball/e134d210e4707c29724ebc7fe50d220123f0fdd9",
     1851                "reference": "e134d210e4707c29724ebc7fe50d220123f0fdd9",
    18521852                "shasum": ""
    18531853            },
     
    19041904            "support": {
    19051905                "issues": "https://github.com/php-mock/php-mock/issues",
    1906                 "source": "https://github.com/php-mock/php-mock/tree/2.6.1"
     1906                "source": "https://github.com/php-mock/php-mock/tree/2.6.2"
    19071907            },
    19081908            "funding": [
     
    19121912                }
    19131913            ],
    1914             "time": "2025-02-28T18:11:56+00:00"
     1914            "time": "2025-08-18T19:59:14+00:00"
    19151915        },
    19161916        {
     
    23572357        {
    23582358            "name": "phpunit/phpunit",
    2359             "version": "9.6.23",
     2359            "version": "9.6.24",
    23602360            "source": {
    23612361                "type": "git",
    23622362                "url": "https://github.com/sebastianbergmann/phpunit.git",
    2363                 "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95"
    2364             },
    2365             "dist": {
    2366                 "type": "zip",
    2367                 "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/43d2cb18d0675c38bd44982a5d1d88f6d53d8d95",
    2368                 "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95",
     2363                "reference": "ea49afa29aeea25ea7bf9de9fdd7cab163cc0701"
     2364            },
     2365            "dist": {
     2366                "type": "zip",
     2367                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea49afa29aeea25ea7bf9de9fdd7cab163cc0701",
     2368                "reference": "ea49afa29aeea25ea7bf9de9fdd7cab163cc0701",
    23692369                "shasum": ""
    23702370            },
     
    23772377                "ext-xml": "*",
    23782378                "ext-xmlwriter": "*",
    2379                 "myclabs/deep-copy": "^1.13.1",
     2379                "myclabs/deep-copy": "^1.13.4",
    23802380                "phar-io/manifest": "^2.0.4",
    23812381                "phar-io/version": "^3.2.1",
     
    23882388                "sebastian/cli-parser": "^1.0.2",
    23892389                "sebastian/code-unit": "^1.0.8",
    2390                 "sebastian/comparator": "^4.0.8",
     2390                "sebastian/comparator": "^4.0.9",
    23912391                "sebastian/diff": "^4.0.6",
    23922392                "sebastian/environment": "^5.1.5",
    23932393                "sebastian/exporter": "^4.0.6",
    2394                 "sebastian/global-state": "^5.0.7",
     2394                "sebastian/global-state": "^5.0.8",
    23952395                "sebastian/object-enumerator": "^4.0.4",
    23962396                "sebastian/resource-operations": "^3.0.4",
     
    24402440                "issues": "https://github.com/sebastianbergmann/phpunit/issues",
    24412441                "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
    2442                 "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.23"
     2442                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.24"
    24432443            },
    24442444            "funding": [
     
    24642464                }
    24652465            ],
    2466             "time": "2025-05-02T06:40:34+00:00"
     2466            "time": "2025-08-10T08:32:42+00:00"
    24672467        },
    24682468        {
     
    31153115        {
    31163116            "name": "react/promise",
    3117             "version": "v3.2.0",
     3117            "version": "v3.3.0",
    31183118            "source": {
    31193119                "type": "git",
    31203120                "url": "https://github.com/reactphp/promise.git",
    3121                 "reference": "8a164643313c71354582dc850b42b33fa12a4b63"
    3122             },
    3123             "dist": {
    3124                 "type": "zip",
    3125                 "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63",
    3126                 "reference": "8a164643313c71354582dc850b42b33fa12a4b63",
     3121                "reference": "23444f53a813a3296c1368bb104793ce8d88f04a"
     3122            },
     3123            "dist": {
     3124                "type": "zip",
     3125                "url": "https://api.github.com/repos/reactphp/promise/zipball/23444f53a813a3296c1368bb104793ce8d88f04a",
     3126                "reference": "23444f53a813a3296c1368bb104793ce8d88f04a",
    31273127                "shasum": ""
    31283128            },
     
    31313131            },
    31323132            "require-dev": {
    3133                 "phpstan/phpstan": "1.10.39 || 1.4.10",
     3133                "phpstan/phpstan": "1.12.28 || 1.4.10",
    31343134                "phpunit/phpunit": "^9.6 || ^7.5"
    31353135            },
     
    31763176            "support": {
    31773177                "issues": "https://github.com/reactphp/promise/issues",
    3178                 "source": "https://github.com/reactphp/promise/tree/v3.2.0"
     3178                "source": "https://github.com/reactphp/promise/tree/v3.3.0"
    31793179            },
    31803180            "funding": [
     
    31843184                }
    31853185            ],
    3186             "time": "2024-05-24T10:39:05+00:00"
     3186            "time": "2025-08-19T18:57:03+00:00"
    31873187        },
    31883188        {
     
    35583558        {
    35593559            "name": "sebastian/comparator",
    3560             "version": "4.0.8",
     3560            "version": "4.0.9",
    35613561            "source": {
    35623562                "type": "git",
    35633563                "url": "https://github.com/sebastianbergmann/comparator.git",
    3564                 "reference": "fa0f136dd2334583309d32b62544682ee972b51a"
    3565             },
    3566             "dist": {
    3567                 "type": "zip",
    3568                 "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
    3569                 "reference": "fa0f136dd2334583309d32b62544682ee972b51a",
     3564                "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5"
     3565            },
     3566            "dist": {
     3567                "type": "zip",
     3568                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/67a2df3a62639eab2cc5906065e9805d4fd5dfc5",
     3569                "reference": "67a2df3a62639eab2cc5906065e9805d4fd5dfc5",
    35703570                "shasum": ""
    35713571            },
     
    36203620            "support": {
    36213621                "issues": "https://github.com/sebastianbergmann/comparator/issues",
    3622                 "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
     3622                "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.9"
    36233623            },
    36243624            "funding": [
     
    36263626                    "url": "https://github.com/sebastianbergmann",
    36273627                    "type": "github"
    3628                 }
    3629             ],
    3630             "time": "2022-09-14T12:41:17+00:00"
     3628                },
     3629                {
     3630                    "url": "https://liberapay.com/sebastianbergmann",
     3631                    "type": "liberapay"
     3632                },
     3633                {
     3634                    "url": "https://thanks.dev/u/gh/sebastianbergmann",
     3635                    "type": "thanks_dev"
     3636                },
     3637                {
     3638                    "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator",
     3639                    "type": "tidelift"
     3640                }
     3641            ],
     3642            "time": "2025-08-10T06:51:50+00:00"
    36313643        },
    36323644        {
     
    38953907        {
    38963908            "name": "sebastian/global-state",
    3897             "version": "5.0.7",
     3909            "version": "5.0.8",
    38983910            "source": {
    38993911                "type": "git",
    39003912                "url": "https://github.com/sebastianbergmann/global-state.git",
    3901                 "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9"
    3902             },
    3903             "dist": {
    3904                 "type": "zip",
    3905                 "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
    3906                 "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
     3913                "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6"
     3914            },
     3915            "dist": {
     3916                "type": "zip",
     3917                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/b6781316bdcd28260904e7cc18ec983d0d2ef4f6",
     3918                "reference": "b6781316bdcd28260904e7cc18ec983d0d2ef4f6",
    39073919                "shasum": ""
    39083920            },
     
    39473959            "support": {
    39483960                "issues": "https://github.com/sebastianbergmann/global-state/issues",
    3949                 "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7"
     3961                "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.8"
    39503962            },
    39513963            "funding": [
     
    39533965                    "url": "https://github.com/sebastianbergmann",
    39543966                    "type": "github"
    3955                 }
    3956             ],
    3957             "time": "2024-03-02T06:35:11+00:00"
     3967                },
     3968                {
     3969                    "url": "https://liberapay.com/sebastianbergmann",
     3970                    "type": "liberapay"
     3971                },
     3972                {
     3973                    "url": "https://thanks.dev/u/gh/sebastianbergmann",
     3974                    "type": "thanks_dev"
     3975                },
     3976                {
     3977                    "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state",
     3978                    "type": "tidelift"
     3979                }
     3980            ],
     3981            "time": "2025-08-10T07:10:35+00:00"
    39583982        },
    39593983        {
     
    41284152        {
    41294153            "name": "sebastian/recursion-context",
    4130             "version": "4.0.5",
     4154            "version": "4.0.6",
    41314155            "source": {
    41324156                "type": "git",
    41334157                "url": "https://github.com/sebastianbergmann/recursion-context.git",
    4134                 "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1"
    4135             },
    4136             "dist": {
    4137                 "type": "zip",
    4138                 "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
    4139                 "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
     4158                "reference": "539c6691e0623af6dc6f9c20384c120f963465a0"
     4159            },
     4160            "dist": {
     4161                "type": "zip",
     4162                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/539c6691e0623af6dc6f9c20384c120f963465a0",
     4163                "reference": "539c6691e0623af6dc6f9c20384c120f963465a0",
    41404164                "shasum": ""
    41414165            },
     
    41794203            "support": {
    41804204                "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
    4181                 "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5"
     4205                "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.6"
    41824206            },
    41834207            "funding": [
     
    41854209                    "url": "https://github.com/sebastianbergmann",
    41864210                    "type": "github"
    4187                 }
    4188             ],
    4189             "time": "2023-02-03T06:07:39+00:00"
     4211                },
     4212                {
     4213                    "url": "https://liberapay.com/sebastianbergmann",
     4214                    "type": "liberapay"
     4215                },
     4216                {
     4217                    "url": "https://thanks.dev/u/gh/sebastianbergmann",
     4218                    "type": "thanks_dev"
     4219                },
     4220                {
     4221                    "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context",
     4222                    "type": "tidelift"
     4223                }
     4224            ],
     4225            "time": "2025-08-10T06:57:39+00:00"
    41904226        },
    41914227        {
     
    48834919        {
    48844920            "name": "symfony/polyfill-ctype",
    4885             "version": "v1.32.0",
     4921            "version": "v1.33.0",
    48864922            "source": {
    48874923                "type": "git",
     
    49424978            ],
    49434979            "support": {
    4944                 "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0"
     4980                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
    49454981            },
    49464982            "funding": [
     
    49544990                },
    49554991                {
     4992                    "url": "https://github.com/nicolas-grekas",
     4993                    "type": "github"
     4994                },
     4995                {
    49564996                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    49574997                    "type": "tidelift"
     
    49625002        {
    49635003            "name": "symfony/polyfill-intl-grapheme",
    4964             "version": "v1.32.0",
     5004            "version": "v1.33.0",
    49655005            "source": {
    49665006                "type": "git",
    49675007                "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
    4968                 "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
    4969             },
    4970             "dist": {
    4971                 "type": "zip",
    4972                 "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
    4973                 "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
     5008                "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70"
     5009            },
     5010            "dist": {
     5011                "type": "zip",
     5012                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70",
     5013                "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70",
    49745014                "shasum": ""
    49755015            },
     
    50205060            ],
    50215061            "support": {
    5022                 "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0"
     5062                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0"
    50235063            },
    50245064            "funding": [
     
    50325072                },
    50335073                {
     5074                    "url": "https://github.com/nicolas-grekas",
     5075                    "type": "github"
     5076                },
     5077                {
    50345078                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    50355079                    "type": "tidelift"
    50365080                }
    50375081            ],
    5038             "time": "2024-09-09T11:45:10+00:00"
     5082            "time": "2025-06-27T09:58:17+00:00"
    50395083        },
    50405084        {
    50415085            "name": "symfony/polyfill-intl-normalizer",
    5042             "version": "v1.32.0",
     5086            "version": "v1.33.0",
    50435087            "source": {
    50445088                "type": "git",
     
    51015145            ],
    51025146            "support": {
    5103                 "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0"
     5147                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0"
    51045148            },
    51055149            "funding": [
     
    51135157                },
    51145158                {
     5159                    "url": "https://github.com/nicolas-grekas",
     5160                    "type": "github"
     5161                },
     5162                {
    51155163                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    51165164                    "type": "tidelift"
     
    51215169        {
    51225170            "name": "symfony/polyfill-mbstring",
    5123             "version": "v1.32.0",
     5171            "version": "v1.33.0",
    51245172            "source": {
    51255173                "type": "git",
     
    51825230            ],
    51835231            "support": {
    5184                 "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0"
     5232                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
    51855233            },
    51865234            "funding": [
     
    51945242                },
    51955243                {
     5244                    "url": "https://github.com/nicolas-grekas",
     5245                    "type": "github"
     5246                },
     5247                {
    51965248                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    51975249                    "type": "tidelift"
     
    52025254        {
    52035255            "name": "symfony/polyfill-php73",
    5204             "version": "v1.32.0",
     5256            "version": "v1.33.0",
    52055257            "source": {
    52065258                "type": "git",
     
    52585310            ],
    52595311            "support": {
    5260                 "source": "https://github.com/symfony/polyfill-php73/tree/v1.32.0"
     5312                "source": "https://github.com/symfony/polyfill-php73/tree/v1.33.0"
    52615313            },
    52625314            "funding": [
     
    52705322                },
    52715323                {
     5324                    "url": "https://github.com/nicolas-grekas",
     5325                    "type": "github"
     5326                },
     5327                {
    52725328                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    52735329                    "type": "tidelift"
     
    52785334        {
    52795335            "name": "symfony/polyfill-php80",
    5280             "version": "v1.32.0",
     5336            "version": "v1.33.0",
    52815337            "source": {
    52825338                "type": "git",
     
    53385394            ],
    53395395            "support": {
    5340                 "source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0"
     5396                "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0"
    53415397            },
    53425398            "funding": [
     
    53505406                },
    53515407                {
     5408                    "url": "https://github.com/nicolas-grekas",
     5409                    "type": "github"
     5410                },
     5411                {
    53525412                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
    53535413                    "type": "tidelift"
     
    53585418        {
    53595419            "name": "symfony/polyfill-php81",
    5360             "version": "v1.32.0",
     5420            "version": "v1.33.0",
    53615421            "source": {
    53625422                "type": "git",
     
    54145474            ],
    54155475            "support": {
    5416                 "source": "https://github.com/symfony/polyfill-php81/tree/v1.32.0"
     5476                "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0"
    54175477            },
    54185478            "funding": [
     
    54235483                {
    54245484                    "url": "https://github.com/fabpot",
     5485                    "type": "github"
     5486                },
     5487                {
     5488                    "url": "https://github.com/nicolas-grekas",
    54255489                    "type": "github"
    54265490                },
     
    57775841        {
    57785842            "name": "yoast/phpunit-polyfills",
    5779             "version": "1.1.4",
     5843            "version": "1.1.5",
    57805844            "source": {
    57815845                "type": "git",
    57825846                "url": "https://github.com/Yoast/PHPUnit-Polyfills.git",
    5783                 "reference": "e6faedf5e34cea4438e341f660e2f719760c531d"
    5784             },
    5785             "dist": {
    5786                 "type": "zip",
    5787                 "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/e6faedf5e34cea4438e341f660e2f719760c531d",
    5788                 "reference": "e6faedf5e34cea4438e341f660e2f719760c531d",
     5847                "reference": "41aaac462fbd80feb8dd129e489f4bbc53fe26b0"
     5848            },
     5849            "dist": {
     5850                "type": "zip",
     5851                "url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/41aaac462fbd80feb8dd129e489f4bbc53fe26b0",
     5852                "reference": "41aaac462fbd80feb8dd129e489f4bbc53fe26b0",
    57895853                "shasum": ""
    57905854            },
     
    57965860                "php-parallel-lint/php-console-highlighter": "^1.0.0",
    57975861                "php-parallel-lint/php-parallel-lint": "^1.4.0",
    5798                 "yoast/yoastcs": "^3.1.0"
     5862                "yoast/yoastcs": "^3.2.0"
    57995863            },
    58005864            "type": "library",
     
    58365900                "source": "https://github.com/Yoast/PHPUnit-Polyfills"
    58375901            },
    5838             "time": "2025-02-09T18:13:44+00:00"
     5902            "time": "2025-08-10T04:54:36+00:00"
    58395903        }
    58405904    ],
  • captcha-eu/trunk/readme.txt

    r3340205 r3347420  
    55Tested up to: 6.7
    66Requires PHP: 7.0
    7 Stable tag: 1.0.61
     7Stable tag: 1.0.62
    88License: GPL
    99License URI: https://opensource.org/license/gpl/
  • captcha-eu/trunk/src/Admin.php

    r3340205 r3347420  
    189189            // check if option proxy_enabled set => update sdk.js content
    190190            if ($proxyForce || get_option('captcha_at_proxy_enabled')) {
    191                 // sdk.js url
    192                 global $wp_version;
    193                 $sdkUrl = add_query_arg(['wpv' => $wp_version], $this->endpoint . '/sdk.js');
    194 
    195                 // fetch sdk.js from endpoint
    196                 $sdkJSContent = file_get_contents($sdkUrl);
    197 
    198                 if ('' != $sdkJSContent) {
    199                     // save sdk.js content to option
    200                     update_option('captcha_at_proxy_sdkjs_content', $sdkJSContent);
    201                     // set last sdk.js update timestamp
    202                     update_option('captcha_at_proxy_sdkjs_updated_at', time());
     191                // Validate endpoint URL to prevent SSRF
     192                if ($this->isValidCaptchaHost($this->endpoint)) {
     193                    // sdk.js url
     194                    global $wp_version;
     195                    $sdkUrl = add_query_arg(['wpv' => $wp_version], $this->endpoint . '/sdk.js');
     196
     197                    // Use wp_safe_remote_get instead of file_get_contents for security
     198                    $response = wp_safe_remote_get($sdkUrl, [
     199                        'timeout' => 10,
     200                        'redirection' => 0,
     201                    ]);
     202
     203                    if (!is_wp_error($response)) {
     204                        $sdkJSContent = wp_remote_retrieve_body($response);
     205                       
     206                        if ('' != $sdkJSContent) {
     207                            // save sdk.js content to option
     208                            update_option('captcha_at_proxy_sdkjs_content', $sdkJSContent);
     209                            // set last sdk.js update timestamp
     210                            update_option('captcha_at_proxy_sdkjs_updated_at', time());
     211                        }
     212                    }
    203213                }
    204214            }
     
    828838        if ('captcha_page_captcha-eu-settings' == $screen->base) {
    829839            wp_enqueue_script('captcha_admin_script', $this->plugin_dir_url . 'assets/js/option-settings.js', ['jquery'], '1.0');
     840           
     841            // Localize script with nonce for security
     842            wp_localize_script('captcha_admin_script', 'captcha_at_ajax', [
     843                'nonce' => wp_create_nonce('captcha_at_check_settings_nonce'),
     844            ]);
    830845        }
    831846    }
     
    833848    public function captcha_at_check_settings()
    834849    {
     850        // Verify nonce for CSRF protection
     851        if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'captcha_at_check_settings_nonce')) {
     852            wp_send_json_error([
     853                'notice' => $this->core->options->panelMSG('error', __('Security check failed', 'captcha-eu')),
     854            ]);
     855            return;
     856        }
     857       
    835858        // Allow only authenticated admins to check settings
    836         if (!is_admin() && !current_user_can('manage_options')) {
     859        if (!current_user_can('manage_options')) {
    837860            wp_send_json_error([
    838861                'notice' => $this->core->options->panelMSG('error', __('Unauthorized access', 'captcha-eu')),
     
    13591382    public function apiFetchLatestVersion()
    13601383    {
    1361         // fetch asset version info route
    1362         $data = wp_remote_get($this->endpoint . '/version?t=' . time(), [
     1384        // Validate endpoint URL to prevent SSRF
     1385        if (!$this->isValidCaptchaHost($this->endpoint)) {
     1386            return false;
     1387        }
     1388       
     1389        // Use wp_safe_remote_get to prevent SSRF attacks
     1390        $data = wp_safe_remote_get($this->endpoint . '/version?t=' . time(), [
    13631391            'headers' => ['Content-Type' => 'application/json', 'User-Agent' => 'Captcha'],
     1392            'timeout' => 10,
     1393            'redirection' => 0, // Prevent following redirects
    13641394        ]);
    13651395
     
    13901420    }
    13911421
     1422    private function isValidCaptchaHost($host)
     1423    {
     1424        // Sanitize and validate the host URL
     1425        $host = sanitize_url($host);
     1426       
     1427        if (empty($host)) {
     1428            return false;
     1429        }
     1430       
     1431        // Parse the URL
     1432        $parsed_url = wp_parse_url($host);
     1433       
     1434        if (!$parsed_url || !isset($parsed_url['host'])) {
     1435            return false;
     1436        }
     1437       
     1438        $hostname = strtolower($parsed_url['host']);
     1439       
     1440        // Check if the host matches allowed patterns for captcha.eu and captcha.at domains
     1441        // Patterns allow:
     1442        // - *.captcha.eu (e.g., www.captcha.eu, at.captcha.eu, w19.captcha.eu)
     1443        // - *.captcha.at (e.g., www.captcha.at, w19.captcha.at)
     1444        // - captcha.eu
     1445        // - captcha.at
     1446        $allowed_patterns = [
     1447            '/^(.*\.)?captcha\.eu$/',
     1448            '/^(.*\.)?captcha\.at$/',
     1449        ];
     1450       
     1451        $is_allowed = false;
     1452        foreach ($allowed_patterns as $pattern) {
     1453            if (preg_match($pattern, $hostname)) {
     1454                $is_allowed = true;
     1455                break;
     1456            }
     1457        }
     1458       
     1459        if (!$is_allowed) {
     1460            return false;
     1461        }
     1462       
     1463        // Only allow HTTPS connections
     1464        if (!isset($parsed_url['scheme']) || $parsed_url['scheme'] !== 'https') {
     1465            return false;
     1466        }
     1467       
     1468        return true;
     1469    }
     1470
    13921471    public function apiFetchPersonal($host = '', $restKey = '')
    13931472    {
    1394         // fetch personal info route
    1395         $data = wp_remote_get($host . '/api/personal', [
     1473        // Validate host URL to prevent SSRF
     1474        if (!$this->isValidCaptchaHost($host)) {
     1475            return false;
     1476        }
     1477       
     1478        // Use wp_safe_remote_get to prevent SSRF attacks
     1479        // This function blocks requests to private and local IP addresses
     1480        $data = wp_safe_remote_get($host . '/api/personal', [
    13961481            'headers' => ['Content-Type' => 'application/json', 'Rest-Key' => $restKey, 'User-Agent' => 'Captcha'],
     1482            'timeout' => 10,
     1483            'redirection' => 0, // Prevent following redirects
    13971484        ]);
    13981485
  • captcha-eu/trunk/vendor/autoload.php

    r3340205 r3347420  
    2323require_once __DIR__ . '/composer/autoload_real.php';
    2424
    25 return ComposerAutoloaderInit8abf7280a8e72bf2e1071644df96ee2d::getLoader();
     25return ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c::getLoader();
  • captcha-eu/trunk/vendor/composer/autoload_real.php

    r3340205 r3347420  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInit8abf7280a8e72bf2e1071644df96ee2d
     5class ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c
    66{
    77    private static $loader;
     
    2525        require __DIR__ . '/platform_check.php';
    2626
    27         spl_autoload_register(array('ComposerAutoloaderInit8abf7280a8e72bf2e1071644df96ee2d', 'loadClassLoader'), true, true);
     27        spl_autoload_register(array('ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c', 'loadClassLoader'), true, true);
    2828        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
    29         spl_autoload_unregister(array('ComposerAutoloaderInit8abf7280a8e72bf2e1071644df96ee2d', 'loadClassLoader'));
     29        spl_autoload_unregister(array('ComposerAutoloaderInit94713fa3f6c006201a5ed0dff440aa5c', 'loadClassLoader'));
    3030
    3131        require __DIR__ . '/autoload_static.php';
    32         call_user_func(\Composer\Autoload\ComposerStaticInit8abf7280a8e72bf2e1071644df96ee2d::getInitializer($loader));
     32        call_user_func(\Composer\Autoload\ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::getInitializer($loader));
    3333
    3434        $loader->register(true);
  • captcha-eu/trunk/vendor/composer/autoload_static.php

    r3340205 r3347420  
    55namespace Composer\Autoload;
    66
    7 class ComposerStaticInit8abf7280a8e72bf2e1071644df96ee2d
     7class ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c
    88{
    99    public static $prefixLengthsPsr4 = array (
     
    3434    {
    3535        return \Closure::bind(function () use ($loader) {
    36             $loader->prefixLengthsPsr4 = ComposerStaticInit8abf7280a8e72bf2e1071644df96ee2d::$prefixLengthsPsr4;
    37             $loader->prefixDirsPsr4 = ComposerStaticInit8abf7280a8e72bf2e1071644df96ee2d::$prefixDirsPsr4;
    38             $loader->classMap = ComposerStaticInit8abf7280a8e72bf2e1071644df96ee2d::$classMap;
     36            $loader->prefixLengthsPsr4 = ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::$prefixLengthsPsr4;
     37            $loader->prefixDirsPsr4 = ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::$prefixDirsPsr4;
     38            $loader->classMap = ComposerStaticInit94713fa3f6c006201a5ed0dff440aa5c::$classMap;
    3939
    4040        }, null, ClassLoader::class);
  • captcha-eu/trunk/vendor/composer/installers/.git/logs/HEAD

    r3340205 r3347420  
    1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1754469875 +0000   clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/
    2 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 d20a64ed3c94748397ff5973488761b22f6d3f19 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1754469875 +0000   checkout: moving from main to v1.12.0
     10000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000   clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/
     25b390889ecbb17bfa69ed5a030fa2e6075a19ba0 d20a64ed3c94748397ff5973488761b22f6d3f19 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000   checkout: moving from main to v1.12.0
  • captcha-eu/trunk/vendor/composer/installers/.git/logs/refs/heads/main

    r3340205 r3347420  
    1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1754469875 +0000   clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/
     10000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000   clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/
  • captcha-eu/trunk/vendor/composer/installers/.git/logs/refs/remotes/origin/HEAD

    r3340205 r3347420  
    1 0000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1754469875 +0000   clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/
     10000000000000000000000000000000000000000 5b390889ecbb17bfa69ed5a030fa2e6075a19ba0 Erick Hitter (GitLab CI) <git-contrib+ci@ethitter.com> 1755681517 +0000   clone: from /root/.composer/cache/vcs/https---github.com-composer-installers.git/
  • captcha-eu/trunk/vendor/composer/installers/.git/objects/info/packs

    r3340205 r3347420  
    1 P pack-c8323075ac8f3d5b632c113f9a8b003d76f2ef04.pack
     1P pack-d5163848cabfa76e781dca05937c97e4aadfebf6.pack
    22
  • captcha-eu/trunk/wp-captcha.php

    r3340205 r3347420  
    44 * Description: Captcha.eu provides a GDPR compliant protection against bots and spammers.
    55 * Plugin URI:  https://www.captcha.eu
    6  * Version:     1.0.61
     6 * Version:     1.0.62
    77 * Author:      captchaeu
    88 * Author URI:  https://profiles.wordpress.org/captchaeu/
Note: See TracChangeset for help on using the changeset viewer.