Plugin Directory

Changeset 2989840


Ignore:
Timestamp:
11/06/2023 12:01:42 PM (2 years ago)
Author:
plerdy
Message:

Updating plugin to 1.3.3 with A/B testing tracking code and security fix

Location:
plerdy-heatmap/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • plerdy-heatmap/trunk/plerdy_heatmap_tracking.php

    r2976243 r2989840  
    44Plugin URI: https://www.plerdy.com
    55Description: The easiest way to add the Plerdy tracking script to your WordPress site!
    6 Version: 1.3.2
     6Version: 1.3.3
    77Author: Plerdy
    88Author URI: https://www.plerdy.com
     
    8282
    8383    public function register_settings() {
    84         register_setting( 'plerdy-options', 'plerdy_tracking_script' );
    85         register_setting( 'plerdy-options', 'plerdy_abtracking_script' );
     84        register_setting( 'plerdy-options', 'plerdy_tracking_script', array( $this, 'validate_tracking_script' ) );
     85        register_setting( 'plerdy-options', 'plerdy_abtracking_script', array( $this, 'validate_abtracking_script' ) );
    8686        register_setting( 'plerdy-options', 'checkbox' );
    8787    }
     88
     89    public function validate_tracking_script( $input ) {
     90        // Використовуємо регулярний вираз для валідації
     91        $pattern = "/^" .
     92            preg_quote("<!-- BEGIN PLERDY CODE -->", '/') .
     93            "\s*<script type=\"text\/javascript\" defer data-plerdy_code='1'>\s*" .
     94            "var _protocol=\"https:\"==document\.location\.protocol\?\" https:\/\/\":\" http:\/\/\";\s*" .
     95            "_site_hash_code = \"([a-f0-9]{32})\",_suid=(\d+),\s*" .
     96            "plerdyScript=document\.createElement\(\"script\"\);\s*" .
     97            "plerdyScript\.setAttribute\(\"defer\",\"\"\),plerdyScript\.dataset\.plerdymainscript=\"plerdymainscript\",\s*" .
     98            "plerdyScript\.src=\"https:\/\/test\.plerdy\.com\/public\/js\/click\/main\.js\?v=\"\+Math\.random\(\);\s*" .
     99            "var plerdymainscript=document\.querySelector\(\"\\[data-plerdymainscript='plerdymainscript'\\]\"\);\s*" .
     100            "plerdymainscript&&plerdymainscript\.parentNode\.removeChild\(plerdymainscript\);\s*" .
     101            "try{document\.head\.appendChild\(plerdyScript\)}catch\(t\){console\.log\(t,\"unable add script tag\"\)}\s*" .
     102            "<\/script>\s*" .
     103            preg_quote("<!-- END PLERDY CODE -->", '/') .
     104            "$/";
     105
     106
     107
     108        if (preg_match($pattern, $input)) {
     109            return $input;
     110        } else {
     111            // Якщо валідація не пройшла, поверніть значення за замовчуванням або виведіть помилку
     112            add_settings_error( 'plerdy_tracking_script', 'invalid_tracking_script', 'Invalid tracking script format' );
     113            return get_option( 'plerdy_tracking_script' );
     114        }
     115    }
     116
     117    public function validate_abtracking_script( $input ) {
     118        // Використовуємо регулярний вираз для валідації
     119
     120        $pattern = "/^" .
     121            preg_quote("<!-- BEGIN PLERDY A/B TESTING CODE -->", '/') .
     122            "<script type=\"text\/javascript\">" .
     123            "_suid=(\d+);" .
     124            "<\/script>" .
     125            "<script async type=\"text\/javascript\" src=\"https://test.plerdy.com/public/js/click/plerdy_ab-min.js?v=" .
     126        "([a-zA-Z0-9]+)\"" . ">".
     127        "<\/script>" .
     128        preg_quote("<!-- END PLERDY A/B TESTING CODE -->", '/') .
     129        "$/";
     130
     131    if (preg_match($pattern, $input)) {
     132
     133        return $input;
     134        } else {
     135            // Якщо валідація не пройшла, поверніть значення за замовчуванням або виведіть помилку
     136            add_settings_error( 'plerdy_abtracking_script', 'invalid_abtracking_script', 'Invalid A/B testing script format' );
     137            return get_option( 'plerdy_abtracking_script' );
     138        }
     139    }
     140
    88141
    89142    public function admin_options() {
  • plerdy-heatmap/trunk/readme.txt

    r2976243 r2989840  
    44Requires at least: 1.0
    55Tested up to: 6.3
    6 Stable Tag: 1.3.2
     6Stable Tag: 1.3.3
    77License: GPLv2
    88License URI: https://www.gnu.org/licenses/gpl-2.0.html
Note: See TracChangeset for help on using the changeset viewer.