Quotes should also be escaped
Signed-off-by: Kamil Tekiela <tekiela246@gmail.com>
This commit is contained in:
parent
a2f13a8cd2
commit
d610f1aece
@ -13,7 +13,6 @@ use function __;
|
||||
use function array_keys;
|
||||
use function array_merge;
|
||||
use function count;
|
||||
use function htmlspecialchars;
|
||||
use function in_array;
|
||||
use function is_string;
|
||||
use function json_encode;
|
||||
@ -153,16 +152,7 @@ class Sanitize
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitizes $message, taking into account our special codes
|
||||
* for formatting.
|
||||
*
|
||||
* If you want to include result in element attribute, you should escape it.
|
||||
*
|
||||
* Examples:
|
||||
*
|
||||
* <p><?php echo Sanitize::sanitizeMessage($foo); ?></p>
|
||||
*
|
||||
* <a title="<?php echo Sanitize::sanitizeMessage($foo, true); ?>">bar</a>
|
||||
* Sanitizes $message, taking into account our special codes for formatting.
|
||||
*
|
||||
* @param string $message the message
|
||||
* @param bool $safe whether string is safe (can keep < and > chars)
|
||||
@ -170,7 +160,7 @@ class Sanitize
|
||||
public static function sanitizeMessage(string $message, bool $safe = false): string
|
||||
{
|
||||
if (! $safe) {
|
||||
$message = strtr($message, ['<' => '<', '>' => '>']);
|
||||
$message = strtr($message, ['<' => '<', '>' => '>', '"' => '"', "'" => ''']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -28,7 +28,7 @@ class SanitizeTest extends AbstractTestCase
|
||||
public function testXssInHref(): void
|
||||
{
|
||||
$this->assertEquals(
|
||||
'[a@javascript:alert(\'XSS\');@target]link</a>',
|
||||
'[a@javascript:alert('XSS');@target]link</a>',
|
||||
Sanitize::sanitizeMessage('[a@javascript:alert(\'XSS\');@target]link[/a]'),
|
||||
);
|
||||
}
|
||||
@ -98,7 +98,7 @@ class SanitizeTest extends AbstractTestCase
|
||||
public function testLinkDocXss(): void
|
||||
{
|
||||
$this->assertEquals(
|
||||
'[a@./Documentation.html" onmouseover="alert(foo)"]doc</a>',
|
||||
'[a@./Documentation.html" onmouseover="alert(foo)"]doc</a>',
|
||||
Sanitize::sanitizeMessage('[a@./Documentation.html" onmouseover="alert(foo)"]doc[/a]'),
|
||||
);
|
||||
}
|
||||
@ -110,7 +110,7 @@ class SanitizeTest extends AbstractTestCase
|
||||
{
|
||||
$this->assertEquals(
|
||||
'<a href="index.php?route=/url&url=https%3A%2F%2Fdocs.phpmyadmin.net%2F">doc</a>'
|
||||
. '[a@javascript:alert(\'XSS\');@target]link</a>',
|
||||
. '[a@javascript:alert('XSS');@target]link</a>',
|
||||
Sanitize::sanitizeMessage(
|
||||
'[a@https://docs.phpmyadmin.net/]doc[/a][a@javascript:alert(\'XSS\');@target]link[/a]',
|
||||
),
|
||||
@ -123,7 +123,7 @@ class SanitizeTest extends AbstractTestCase
|
||||
public function testHtmlTags(): void
|
||||
{
|
||||
$this->assertEquals(
|
||||
'<div onclick="">',
|
||||
'<div onclick="">',
|
||||
Sanitize::sanitizeMessage('<div onclick="">'),
|
||||
);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user