hitoshura25/cvefixes huggingface dataset:
CVE-2021-4107 (PHP, published 2021-12-14T15:15Z)
Description: value: yetiforcecrm is vulnerable to Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
Severity: MEDIUM (CVSS v3 base score: 6.1)
Weakness: CWE-79 \u2014 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
Repository: https://github.com/yetiforcecompany/yetiforcecrm
Files changed:
config/version.php
modules/Vtiger/actions/Fields.php
public_html/layouts/resources/Fields.js
Commit message: Added additional data validation in the wysiwyg editor when inputting data in the source.


Vulnerable code:
	'appVersion' => '6.3.3',
		$this->exposeMethod('verifyPhoneNumber');
				const instance = this.getEditorInstanceFromName(),
					self = this;
						instanceReady: function (evt) {
							if (self.isModal && self.progressInstance) {
								self.progressInstance.progressIndicator({ mode: 'hide' });

Fixed code:
	'appVersion' => '6.3.4',
		$this->exposeMethod('validate');
		$this->exposeMethod('verifyPhoneNumber');

	/**
	 * Validate the field value.
	 *
	 * @param \App\Request $request
	 *
	 * @throws \App\Exceptions\NoPermitted
	 */
	public function validate(App\Request $request)
	{
		$fieldModel = Vtiger_Module_Model::getInstance($request->getModule())->getFieldByName($request->getByType('fieldName', 2));
		if (!$fieldModel || !$fieldModel->isActiveField() || !$fieldModel->isViewEnabled()) {
			throw new \App\Exceptions\NoPermitted('ERR_NO_PERMISSIONS_TO_FIELD', 406);
		}
		$recordModel = \Vtiger_Record_Model::getCleanInstance($fieldModel->getModuleName());
		$fieldModel->getUITypeModel()->setValueFromRequest($request, $recordModel, 'fieldValue');
		$response = new Vtiger_Response();
		$response->setResult([
			'raw' => $recordModel->get($fieldModel->getName()),
			'display' => $recordModel->getDisplayValue($fieldModel->getName()),
		]);
		$response->emit();
	}
				const instance = this.getEditorInstanceFromName();
						instanceReady: (evt) => {
							if (this.isModal && this.progressInstance) {
								this.progressInstance.progressIndicator({ mode: 'hide' });
							}
						},
						beforeCommandExec: (e) => {
							if (e.editor.mode === 'source') {
								return this.validate(element, e);

			/**
			 * Function to validate the field value
			 * @param {jQuery} element
			 * @param {object} e
			 */
			validate(element, e) {
				let status = true;
				AppConnector.request({
					async: false,
					data: {
						module: element.closest('form').find('[name="module"]').val(),
						action: 'Fields',
						mode: 'validate',
						fieldName: element.attr('name'),
						fieldValue: element.val()
					}
				})
					.done(function (data) {
						element.val(data.result.raw);
					})
					.fail(function (error) {
						app.showNotify({
							type: 'error',
							title: app.vtranslate('JS_ERROR'),
							text: error
						});
						status = false;
					});

				return status;
			}
CVE-2021-4117 (SQL, published 2021-12-15T15:15Z)
Description: value: yetiforcecrm is vulnerable to Business Logic Errors
Severity: MEDIUM (CVSS v3 base score: 4.3)
Weakness: CWE-20 \u2014 Improper Input Validation
The product receives input or data, but it does
        not validate or incorrectly validates that the input has the
        properties that are required to process the data safely and
        correctly.
Repository: https://github.com/yetiforcecompany/yetiforcecrm
Files changed:
config/version.php
install/install_schema/data.sql
Commit message: Improved validation for weight fields


Vulnerable code:
	'appVersion' => '6.3.6',
insert  into `vtiger_field`(`tabid`,`fieldid`,`columnname`,`tablename`,`generatedtype`,`uitype`,`fieldname`,`fieldlabel`,`readonly`,`presence`,`defaultvalue`,`maximumlength`,`sequence`,`block`,`displaytype`,`typeofdata`,`quickcreate`,`quickcreatesequence`,`info_type`,`masseditable`,`helpinfo`,`summaryfield`,`fieldparams`,`header_field`,`maxlengthtext`,`maxwidthcolumn`,`visible`,`tabindex`,`color`,`icon`) values (14,2824,'weight','vtiger_products',1,7,'weight','FL_WEIGHT',0,2,'','99999999',8,33,1,'NN~O',1,0,'BAS',1,'',0,'',NULL,0,0,0,0,'',NULL);

Fixed code:
	'appVersion' => '6.3.7',
insert  into `vtiger_field`(`tabid`,`fieldid`,`columnname`,`tablename`,`generatedtype`,`uitype`,`fieldname`,`fieldlabel`,`readonly`,`presence`,`defaultvalue`,`maximumlength`,`sequence`,`block`,`displaytype`,`typeofdata`,`quickcreate`,`quickcreatesequence`,`info_type`,`masseditable`,`helpinfo`,`summaryfield`,`fieldparams`,`header_field`,`maxlengthtext`,`maxwidthcolumn`,`visible`,`tabindex`,`color`,`icon`) values (14,2824,'weight','vtiger_products',1,7,'weight','FL_WEIGHT',0,2,'','0,99999999',8,33,1,'NN~O',1,0,'BAS',1,'',0,'',NULL,0,0,0,0,'',NULL);
CVE-2021-4121 (Other, published 2021-12-16T08:15Z)
Description: value: yetiforcecrm is vulnerable to Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
Severity: MEDIUM (CVSS v3 base score: 6.1)
Weakness: CWE-79 \u2014 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
Repository: https://github.com/yetiforcecompany/yetiforcecrm
Files changed:
config/version.php
layouts/basic/modules/Vtiger/Modals/MeetingModal.tpl
Commit message: Improved MeetingUrl uitype


Vulnerable code:
	'appVersion' => '6.3.7',
	'patchVersion' => '2021.12.14',
									data-copy-attribute="clipboard-text" data-clipboard-text="{$MEETING_GUEST_URL}"
									<a class="m-1 u-fs-4x yfi-enter-guest text-success" href="{$MEETING_GUEST_URL}" rel="noreferrer noopener" target="_blank"
											<a class="m-1 yfi-send-invitation text-info u-fs-4x" href="{$URLDATA}"
										data-copy-attribute="clipboard-text" data-clipboard-text="{$MEETING_URL}"
									<a class="m-1 u-fs-4x yfi-enter-moderator text-danger" href="{$MEETING_URL}" rel="noreferrer noopener" target="_blank"

Fixed code:
	'appVersion' => '6.3.8',
	'patchVersion' => '2021.12.15',
									data-copy-attribute="clipboard-text" data-clipboard-text="{\App\Purifier::encodeHtml($MEETING_GUEST_URL)}"
									<a class="m-1 u-fs-4x yfi-enter-guest text-success" href="{\App\Purifier::encodeHtml($MEETING_GUEST_URL)}" rel="noreferrer noopener" target="_blank"
											<a class="m-1 yfi-send-invitation text-info u-fs-4x" href="{\App\Purifier::encodeHtml($URLDATA)}"
										data-copy-attribute="clipboard-text" data-clipboard-text="{\App\Purifier::encodeHtml($MEETING_URL)}"
									<a class="m-1 u-fs-4x yfi-enter-moderator text-danger" href="{\App\Purifier::encodeHtml($MEETING_URL)}" rel="noreferrer noopener" target="_blank"
CVE-2022-0269 (PHP, published 2022-01-24T12:15Z)
Description: value: Cross-Site Request Forgery (CSRF) in Packagist yetiforce/yetiforce-crm prior to 6.3.0.
Severity: MEDIUM (CVSS v3 base score: 8)
Weakness: CWE-352 \u2014 Cross-Site Request Forgery (CSRF)
The web application does not, or can not, sufficiently verify whether a well-formed, valid, consistent request was intentionally provided by the user who submitted the request.
Repository: https://github.com/yetiforcecompany/yetiforcecrm
Files changed:
app/Controller/Action.php
app/Controller/Base.php
app/Request.php
config/ConfigTemplates.php
config/Security.php
config/csrf_config.php
config/version.php
include/main/WebUI.php
install/views/Index.php
modules/Users/views/Login.php
Commit message: Improved CSRF protection


Vulnerable code:
	/** {@inheritdoc} */
	public $csrfActive = false;

	/**
	 * CSRF is active?.
	 *
	 * @var bool
	 */
	public $csrfActive = true;
	/**
	 * Activated csrf.
	 *
	 * @var bool
	 */
	protected static $activatedCsrf = false;
		if (!self::$activatedCsrf) {
			if ($this->csrfActive && \App\Config::security('csrfActive')) {
				require_once 'config/csrf_config.php';
				\CsrfMagic\Csrf::init();
				$this->csrfActive = true;
			} else {
				$this->csrfActive = false;
			}
			self::$activatedCsrf = true;
		if (class_exists('CSRFConfig') && !\CsrfMagic\Csrf::check(false)) {
			throw new \App\Exceptions\Csrf('Unsupported request');
		\CsrfMagic\Csrf::$expires = 259200;
			throw new \App\Exceptions\AppException('Invalid request - Response For Illegal Access', 403);
	'appVersion' => '6.3.42',
	'patchVersion' => '2022.01.17',
			if ($handler->csrfActive) {
				$handler->validateRequest($request);
			}
	/** {@inheritdoc} */
	public $csrfActive = false;

	/** {@inheritdoc} */
	public $csrfActive = false;


Fixed code:
 * @author    Radosław Skrzypczak <r.skrzypczak@yetiforce.com>
 * @author    Radosław Skrzypczak <r.skrzypczak@yetiforce.com>
		if (\App\Config::security('csrfActive')) {
			require_once 'config/csrf_config.php';
			\CsrfMagic\Csrf::init();
		if (\App\Config::security('csrfActive')) {
			\CsrfMagic\Csrf::check();
		'csrfLifetimeToken' => [
			'default' => 28800,
			'description' => 'Default expire time of CSRF token in seconds',
			'validation' => '\App\Validator::naturalNumber',
			'sanitization' => '\App\Purifier::naturalNumber'
		],
	/** Default expire time of CSRF token in seconds */
	public static $csrfLifetimeToken = 28800;

 * Contributor(s): YetiForce Sp. z o.o
		\CsrfMagic\Csrf::$expires = \App\Config::security('csrfLifetimeToken', 7200);
			throw new \App\Exceptions\Csrf('Invalid request - Response For Illegal Access', 403);
		\CsrfMagic\Csrf::$defer = true;
	'appVersion' => '6.3.43',
	'patchVersion' => '2022.01.18',
			$handler->validateRequest($request);
CVE-2022-2885 (PHP, published 2022-08-21T08:15Z)
Description: value: Cross-site Scripting (XSS) - Stored in GitHub repository yetiforcecompany/yetiforcecrm prior to 6.4.0.
Severity: nan (CVSS v3 base score: 4.8)
Weakness: CWE-79 \u2014 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
Repository: https://github.com/yetiforcecompany/yetiforcecrm
Files changed:
config/version.php
modules/Rss/models/Record.php
Commit message: Improved input data cleanup


Vulnerable code:
	'appVersion' => '6.3.427',
	'patchVersion' => '2022.08.12',
		$this->set('url', $rss->link);

Fixed code:
	'appVersion' => '6.3.428',
	'patchVersion' => '2022.08.13',
		$this->set('url', \App\Purifier::purifyByType((string) $rss->link, 'Text'));
CVE-2022-3000 (Other, published 2022-09-20T07:15Z)
Description: value: Cross-site Scripting (XSS) - Stored in GitHub repository yetiforcecompany/yetiforcecrm prior to 6.4.0.
Severity: nan (CVSS v3 base score: 5.4)
Weakness: CWE-79 \u2014 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
Repository: https://github.com/yetiforcecompany/yetiforcecrm
Files changed:
config/version.php
layouts/basic/modules/Settings/LayoutEditor/EditField.tpl
Commit message: Improved display of data in the modal field editing window


Vulnerable code:
	'appVersion' => '6.4.11',
	'patchVersion' => '2022.08.25',
				<input type="hidden" name="sourceModule" value="{$SELECTED_MODULE_NAME}" />
						<strong>{App\Language::translate('LBL_LENGTH', $QUALIFIED_MODULE)}: </strong>{$FIELD_MODEL->get('maximumlength')}
								<input type="text" name="label" value="{$FIELD_MODEL->getFieldLabel()}" class="form-control"
								value="{$FIELD_MODEL->get('presence')}" />
										<option value="{$VALUE}" {if $VALUE == $HEADER_FIELD_TYPE} selected {/if}>{App\Language::translate($LABEL, $QUALIFIED_MODULE)}</option>
														<option value="{$REL_FIELD_MODEL->getName()}" data-field-name="{$REL_FIELD_NAME}"
																data-sort-index="{$ELEMENT_POSITION_IN_ARRAY}" selected="selected"
								<input name="header_class" value="{if $HEADER_FIELD_VALUE}{$HEADER_FIELD_VALUE}{else}badge-info{/if}" type="text" class="hide">
										value="{if isset($PARAMS['mask'])}{$PARAMS['mask']}{/if}" />
								value="{$FIELD_MODEL->get('maxlengthtext')}" />

Fixed code:
	'appVersion' => '6.4.12',
	'patchVersion' => '2022.08.26',
				<input type="hidden" name="sourceModule" value="{$SELECTED_MODULE_NAME|escape}" />
						<strong>{App\Language::translate('LBL_LENGTH', $QUALIFIED_MODULE)}: </strong>{$FIELD_MODEL->get('maximumlength')|escape}
								<input type="text" name="label" value="{\App\Purifier::encodeHtml($FIELD_MODEL->getFieldLabel())}" class="form-control"
								value="{$FIELD_MODEL->get('presence')|escape}" />
										<option value="{\App\Purifier::encodeHtml($VALUE)}" {if $VALUE == $HEADER_FIELD_TYPE} selected {/if}>{App\Language::translate($LABEL, $QUALIFIED_MODULE)}</option>
														<option value="{$REL_FIELD_MODEL->getName()}" data-field-name="{$REL_FIELD_NAME|escape}"
																data-sort-index="{$ELEMENT_POSITION_IN_ARRAY|escape}" selected="selected"
								<input name="header_class" value="{if $HEADER_FIELD_VALUE}{$HEADER_FIELD_VALUE|escape}{else}badge-info{/if}" type="text" class="hide">
										value="{if isset($PARAMS['mask'])}{\App\Purifier::encodeHtml($PARAMS['mask'])}{/if}" />
								value="{$FIELD_MODEL->get('maxlengthtext')|escape}" />
CVE-2022-3002 (Other, published 2022-10-06T18:16Z)
Description: value: Cross-site Scripting (XSS) - Stored in GitHub repository yetiforcecompany/yetiforcecrm prior to 6.4.0.
Severity: nan (CVSS v3 base score: 5.4)
Weakness: CWE-79 \u2014 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
Repository: https://github.com/yetiforcecompany/yetiforcecrm
Files changed:
layouts/basic/modules/Settings/BusinessHours/EditViewBlocks.tpl
Commit message: Improved display of data in the business hours


Vulnerable code:
							<span class="yfi yfi-full-editing-view mr-2"></span>{\App\Language::translate('LBL_EDIT_BUSINESS_HOURS',$QUALIFIED_MODULE)} - {$RECORD_MODEL->getName()}
									<input type="text" name="name" class="form-control w-100" {if isset($RECORD_MODEL)} value="{$RECORD_MODEL->getName()}" {/if}
										data-validation-engine="validate[required,funcCall[Vtiger_Base_Validator_Js.invokeValidation]]">

Fixed code:
							<span class="yfi yfi-full-editing-view mr-2"></span>{\App\Language::translate('LBL_EDIT_BUSINESS_HOURS',$QUALIFIED_MODULE)} - {\App\Purifier::encodeHtml($RECORD_MODEL->getName())}
									<input type="text" name="name" class="form-control w-100" {if isset($RECORD_MODEL)}value="{\App\Purifier::encodeHtml($RECORD_MODEL->getName())}" {/if} data-validation-engine="validate[required,funcCall[Vtiger_Base_Validator_Js.invokeValidation]]">
CVE-2022-4885 (Other, published 2023-01-11T18:15Z)
Description: value: A vulnerability has been found in sviehb jefferson up to 0.3 and classified as critical. This vulnerability affects unknown code of the file src/scripts/jefferson. The manipulation leads to path traversal. The attack can be initiated remotely. The complexity of an attack is rather high. The exploitation appears to be difficult. Upgrading to version 0.4 is able to address this issue. The name of the patch is 53b3f2fc34af0bb32afbcee29d18213e61471d87. It is recommended to upgrade the affected component. The identifier of this vulnerability is VDB-218020.
Severity: nan (CVSS v3 base score: 5.9)
Weakness: CWE-22 \u2014 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.
Repository: https://github.com/sviehb/jefferson
Files changed:
src/scripts/jefferson
Commit message: Fix path traversal security vulnerability by canonicalizing path names of every inodes and discarding inodes with a path
pointing outside of the extraction directory.

Fix path traversal through symlinks by canonicalizing link target path using the extraction directory as root. If the link
still points outside the extraction root, it gets discarded. This way symlinks reflects the reality of a filesystem on device
by pointing to files within the extracted filesystem instead of files from the host executing jefferson.


Vulnerable code:

        target_path = os.path.join(os.getcwd(), target, path)
                        os.symlink(inode.data, target_path)
        dest_path_fs = os.path.join(dest_path, "fs_%i" % fs_index)

Fixed code:
def is_safe_path(basedir, path, follow_symlinks=True):
    if follow_symlinks:
        matchpath = os.path.realpath(path)
    else:
        matchpath = os.path.abspath(path)
    return basedir == os.path.commonpath((basedir, matchpath))
        target_path = os.path.realpath(os.path.join(os.getcwd(), target, path))

        if not is_safe_path(target, target_path):
            print(f"Path traversal attempt to {target_path}, discarding.")
            continue

                    link_path = inode.data.decode('utf-8')
                    if link_path:
                        link_path = link_path[1:]
                    link_target = os.path.realpath(os.path.join(target, link_path))
                    if not is_safe_path(target, link_target):
                        print(f"Path traversal attempt through symlink to {link_target}, discarding.")
                        continue
                        os.symlink(link_target, target_path)
        dest_path_fs = os.path.realpath(os.path.join(dest_path, "fs_%i" % fs_index))
CVE-2023-0592 (Unknown, published 2023-01-31T10:15Z)
Description: value: A path traversal vulnerability affects jefferson's JFFS2 filesystem extractor. By crafting malicious JFFS2 files, attackers could force jefferson to write outside of the extraction directory.This issue affects jefferson: before 0.4.1.


Severity: nan (CVSS v3 base score: 5.5)
Weakness: CWE-22 \u2014 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.
Repository: https://github.com/sviehb/jefferson
Files changed:
Commit message: Merge pull request #48 from sviehb/fix-path-traversal

Fix path traversal bug.

Vulnerable code:

Fixed code:
CVE-2015-10009 (PHP, published 2023-01-02T16:15Z)
Description: value: A vulnerability was found in nterchange up to 4.1.0. It has been rated as critical. This issue affects the function getContent of the file app/controllers/code_caller_controller.php. The manipulation of the argument q with the input %5C%27%29;phpinfo%28%29;/* leads to code injection. The exploit has been disclosed to the public and may be used. Upgrading to version 4.1.1 is able to address this issue. The patch is named fba7d89176fba8fe289edd58835fe45080797d99. It is recommended to upgrade the affected component. The associated identifier of this vulnerability is VDB-217187.
Severity: nan (CVSS v3 base score: 9.8)
Weakness: CWE-94 \u2014 Improper Control of Generation of Code ('Code Injection')
The product constructs all or part of a code segment using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the syntax or behavior of the intended code segment.
Repository: https://github.com/nonfiction/nterchange_backend
Files changed:
app/controllers/code_caller_controller.php
Commit message: Addressing TLM vulnerability

A certain special escape sequence causes dynamic code callers to
execute arbitrary code.

    ?q=%5C%27%29;phpinfo%28%29;/*


Vulnerable code:
			$ret .= "<?php\n" .
				'include_once \'' . $include_file . '\';' . "\n" .
				'$obj = unserialize(\'' . str_replace('\'', '\\\'', serialize($obj)) . '\');' . "\n" .
				'$params = unserialize(\'' . str_replace('\'', '\\\'', serialize($params)) . '\');' . "\n" .
				'print $obj->' . $method . '($params);' . "\n" .
				"?>\n";

Fixed code:
			$ret .= '<?php include_once \'' . $include_file . '\';';
			$ret .= '$obj = '    . $this->wrapSanitizedSerializer($obj)   . ';';
			$ret .= '$params = ' . $this->wrapSanitizedSerializer($param) . ';';
			$ret .= 'print $obj->' . $method . '($params);';
			$ret .= '?>';

	private function wrapSanitizedSerializer($obj) {
		$encoded_serialized_string = base64_encode(serialize($obj));
		return "unserialize(base64_decode('$encoded_serialized_string'))";
	}
CVE-2020-36663 (PHP, published 2023-03-04T07:15Z)
Description: value: A vulnerability, which was classified as problematic, was found in Artesãos SEOTools up to 0.17.1. This affects the function makeTag of the file OpenGraph.php. The manipulation of the argument value leads to open redirect. Upgrading to version 0.17.2 is able to address this issue. The patch is named ca27cd0edf917e0bc805227013859b8b5a1f01fb. It is recommended to upgrade the affected component. The associated identifier of this vulnerability is VDB-222231.
Severity: nan (CVSS v3 base score: 6.1)
Weakness: CWE-601 \u2014 URL Redirection to Untrusted Site ('Open Redirect')
A web application accepts a user-controlled input that specifies a link to an external site, and uses that link in a Redirect. This simplifies phishing attacks.
Repository: https://github.com/artesaos/seotools
Files changed:
src/SEOTools/OpenGraph.php
src/SEOTools/SEOMeta.php
src/SEOTools/TwitterCards.php
Commit message: open redirect vulnerability fixes (#201)

* open redirect vulnerability fix for opengraph

* open redirect vulnerability fix for twitter cards

* open redirect vulnerability fix for setTitle

* fixed preg replace

* Update OpenGraph.php

* Update TwitterCards.php

Vulnerable code:

Fixed code:
        $value = str_replace(['http-equiv=', 'url='], '', $value);
        // open redirect vulnerability fix
        $title = str_replace(['http-equiv=', 'url='], '', $title);
        
        $value = str_replace(['http-equiv=', 'url='], '', $value);
CVE-2020-36664 (PHP, published 2023-03-04T17:15Z)
Description: value: A vulnerability has been found in Artesãos SEOTools up to 0.17.1 and classified as problematic. This vulnerability affects the function setTitle of the file SEOMeta.php. The manipulation of the argument title leads to open redirect. Upgrading to version 0.17.2 is able to address this issue. The name of the patch is ca27cd0edf917e0bc805227013859b8b5a1f01fb. It is recommended to upgrade the affected component. The identifier of this vulnerability is VDB-222232.
Severity: nan (CVSS v3 base score: 6.1)
Weakness: CWE-601 \u2014 URL Redirection to Untrusted Site ('Open Redirect')
A web application accepts a user-controlled input that specifies a link to an external site, and uses that link in a Redirect. This simplifies phishing attacks.
Repository: https://github.com/artesaos/seotools
Files changed:
src/SEOTools/OpenGraph.php
src/SEOTools/SEOMeta.php
src/SEOTools/TwitterCards.php
Commit message: open redirect vulnerability fixes (#201)

* open redirect vulnerability fix for opengraph

* open redirect vulnerability fix for twitter cards

* open redirect vulnerability fix for setTitle

* fixed preg replace

* Update OpenGraph.php

* Update TwitterCards.php

Vulnerable code:

Fixed code:
        $value = str_replace(['http-equiv=', 'url='], '', $value);
        // open redirect vulnerability fix
        $title = str_replace(['http-equiv=', 'url='], '', $title);
        
        $value = str_replace(['http-equiv=', 'url='], '', $value);