Changeset 3290429
- Timestamp:
- 05/09/2025 11:27:55 AM (11 months ago)
- Location:
- avacy
- Files:
-
- 2 deleted
- 4 edited
- 1 copied
-
tags/1.1.7--beta-2 (copied) (copied from avacy/trunk)
-
tags/1.1.7--beta-2/.gitignore (deleted)
-
tags/1.1.7--beta-2/src/Integrations/HtmlForms.php (modified) (2 diffs)
-
tags/1.1.7--beta-2/src/PreemptiveBlock.php (modified) (1 diff)
-
trunk/.gitignore (deleted)
-
trunk/src/Integrations/HtmlForms.php (modified) (2 diffs)
-
trunk/src/PreemptiveBlock.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
avacy/tags/1.1.7--beta-2/src/Integrations/HtmlForms.php
r3239361 r3290429 107 107 private static function parseFields($fields) { 108 108 $parsedFields = []; 109 109 110 if (empty($fields) || !is_string($fields)) { 111 return $parsedFields; 112 } 113 114 // Gestione errori libxml 115 libxml_use_internal_errors(true); 116 117 // Escape degli & non validi 118 $fields = preg_replace('/&(?![a-zA-Z0-9#]+;)/', '&', $fields); 119 110 120 $dom = new DOMDocument(); 111 $dom->loadHTML($fields); 121 try { 122 $dom->loadHTML($fields, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 123 } catch (\Exception $e) { 124 // Log or handle the error if needed 125 libxml_clear_errors(); 126 return $parsedFields; 127 } 128 112 129 $inputs = $dom->getElementsByTagName('input'); 113 130 114 131 foreach($inputs as $input) { 115 132 $attrs = $input->attributes; 116 133 117 134 foreach($attrs as $attrName => $attrValue) { 118 135 if($attrName === 'name') { … … 123 140 ]; 124 141 } 125 126 142 } 127 143 } 128 144 145 libxml_clear_errors(); 146 129 147 return $parsedFields; 130 148 } -
avacy/tags/1.1.7--beta-2/src/PreemptiveBlock.php
r3286076 r3290429 55 55 56 56 public static function output_callback( $buffer ) { 57 // Modify $buffer (HTML content) here 58 57 // Suppress warnings from malformed HTML 58 libxml_use_internal_errors(true); 59 60 // Escape ampersands not part of entities 61 $buffer = preg_replace('/&(?![a-zA-Z0-9#]+;)/', '&', $buffer); 62 59 63 $dom = new DOMDocument(); 60 64 $dom->loadHTML($buffer, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 61 62 if( !empty($buffer) ) {63 65 66 if (!empty($buffer)) { 64 67 $scripts = $dom->getElementsByTagName('script'); 65 68 foreach($scripts as $script) { 66 // if src is in the list of scripts to block67 69 $src = $script->getAttribute('src'); 68 69 if ( ( $src !== '' && ($emt = self::src_contains($src, self::$blackList)) ) || 70 ( $emt = self::inner_html_contains($script, self::$blackList) ) ) { 71 72 // change script type to text/plain 70 71 if (($src !== '' && ($emt = self::src_contains($src, self::$blackList))) || 72 ($emt = self::inner_html_contains($script, self::$blackList))) { 73 73 74 $script->setAttribute('type', 'as-oil'); 74 75 $script->setAttribute('data-src', $src); 75 76 // add avacy attributes77 76 $script->setAttribute('data-managed', 'as-oil'); 78 77 $script->setAttribute('data-type', 'text/javascript'); 79 80 // add vendor81 78 $script->setAttribute($emt['attribute'], $emt['id']); 82 83 // add purposes84 79 $script->setAttribute('data-purposes', implode(',', $emt['purposes'])); 85 80 } 86 81 } 87 88 82 } 89 90 $buffer = $dom->saveHTML(); 91 return $buffer; 83 84 // Clear libxml errors 85 libxml_clear_errors(); 86 87 return $dom->saveHTML(); 92 88 } 93 89 -
avacy/trunk/src/Integrations/HtmlForms.php
r3239361 r3290429 107 107 private static function parseFields($fields) { 108 108 $parsedFields = []; 109 109 110 if (empty($fields) || !is_string($fields)) { 111 return $parsedFields; 112 } 113 114 // Gestione errori libxml 115 libxml_use_internal_errors(true); 116 117 // Escape degli & non validi 118 $fields = preg_replace('/&(?![a-zA-Z0-9#]+;)/', '&', $fields); 119 110 120 $dom = new DOMDocument(); 111 $dom->loadHTML($fields); 121 try { 122 $dom->loadHTML($fields, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 123 } catch (\Exception $e) { 124 // Log or handle the error if needed 125 libxml_clear_errors(); 126 return $parsedFields; 127 } 128 112 129 $inputs = $dom->getElementsByTagName('input'); 113 130 114 131 foreach($inputs as $input) { 115 132 $attrs = $input->attributes; 116 133 117 134 foreach($attrs as $attrName => $attrValue) { 118 135 if($attrName === 'name') { … … 123 140 ]; 124 141 } 125 126 142 } 127 143 } 128 144 145 libxml_clear_errors(); 146 129 147 return $parsedFields; 130 148 } -
avacy/trunk/src/PreemptiveBlock.php
r3286076 r3290429 55 55 56 56 public static function output_callback( $buffer ) { 57 // Modify $buffer (HTML content) here 58 57 // Suppress warnings from malformed HTML 58 libxml_use_internal_errors(true); 59 60 // Escape ampersands not part of entities 61 $buffer = preg_replace('/&(?![a-zA-Z0-9#]+;)/', '&', $buffer); 62 59 63 $dom = new DOMDocument(); 60 64 $dom->loadHTML($buffer, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 61 62 if( !empty($buffer) ) {63 65 66 if (!empty($buffer)) { 64 67 $scripts = $dom->getElementsByTagName('script'); 65 68 foreach($scripts as $script) { 66 // if src is in the list of scripts to block67 69 $src = $script->getAttribute('src'); 68 69 if ( ( $src !== '' && ($emt = self::src_contains($src, self::$blackList)) ) || 70 ( $emt = self::inner_html_contains($script, self::$blackList) ) ) { 71 72 // change script type to text/plain 70 71 if (($src !== '' && ($emt = self::src_contains($src, self::$blackList))) || 72 ($emt = self::inner_html_contains($script, self::$blackList))) { 73 73 74 $script->setAttribute('type', 'as-oil'); 74 75 $script->setAttribute('data-src', $src); 75 76 // add avacy attributes77 76 $script->setAttribute('data-managed', 'as-oil'); 78 77 $script->setAttribute('data-type', 'text/javascript'); 79 80 // add vendor81 78 $script->setAttribute($emt['attribute'], $emt['id']); 82 83 // add purposes84 79 $script->setAttribute('data-purposes', implode(',', $emt['purposes'])); 85 80 } 86 81 } 87 88 82 } 89 90 $buffer = $dom->saveHTML(); 91 return $buffer; 83 84 // Clear libxml errors 85 libxml_clear_errors(); 86 87 return $dom->saveHTML(); 92 88 } 93 89
Note: See TracChangeset
for help on using the changeset viewer.