mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-09 03:32:00 +09:00
Clean up namespaces
This commit is contained in:
parent
4407af2b0f
commit
cb229c2d66
26 changed files with 205 additions and 200 deletions
|
|
@ -1483,7 +1483,7 @@ class Context
|
|||
}
|
||||
|
||||
// Allow if the current user is in the list of allowed IPs.
|
||||
if (Rhymix\Framework\Security\IpFilter::inRanges(RX_CLIENT_IP, config('lock.allow')))
|
||||
if (Rhymix\Framework\Filters\IpFilter::inRanges(RX_CLIENT_IP, config('lock.allow')))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,22 +24,22 @@ class EmbedFilter
|
|||
|
||||
public function getWhiteUrlList()
|
||||
{
|
||||
return Rhymix\Framework\Security\MediaFilter::getObjectWhitelist();
|
||||
return Rhymix\Framework\Filters\MediaFilter::getObjectWhitelist();
|
||||
}
|
||||
|
||||
public function getWhiteIframeUrlList()
|
||||
{
|
||||
return Rhymix\Framework\Security\MediaFilter::getIframeWhitelist();
|
||||
return Rhymix\Framework\Filters\MediaFilter::getIframeWhitelist();
|
||||
}
|
||||
|
||||
function isWhiteDomain($urlAttribute)
|
||||
{
|
||||
return Rhymix\Framework\Security\MediaFilter::matchObjectWhitelist($urlAttribute);
|
||||
return Rhymix\Framework\Filters\MediaFilter::matchObjectWhitelist($urlAttribute);
|
||||
}
|
||||
|
||||
function isWhiteIframeDomain($urlAttribute)
|
||||
{
|
||||
return Rhymix\Framework\Security\MediaFilter::matchIframeWhitelist($urlAttribute);
|
||||
return Rhymix\Framework\Filters\MediaFilter::matchIframeWhitelist($urlAttribute);
|
||||
}
|
||||
|
||||
function isWhiteMimetype($mimeType)
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ class IpFilter
|
|||
public function filter($ip_list, $ip = NULL)
|
||||
{
|
||||
if(!$ip) $ip = $_SERVER['REMOTE_ADDR'];
|
||||
return Rhymix\Framework\Security\IpFilter::inRanges($ip, $ip_list);
|
||||
return Rhymix\Framework\Filters\IpFilter::inRanges($ip, $ip_list);
|
||||
}
|
||||
|
||||
public function validate($ip_list = array())
|
||||
{
|
||||
return Rhymix\Framework\Security\IpFilter::validateRanges($ip_list);
|
||||
return Rhymix\Framework\Filters\IpFilter::validateRanges($ip_list);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ class Purifier
|
|||
|
||||
public function purify(&$content)
|
||||
{
|
||||
$content = Rhymix\Framework\Security\HTMLFilter::clean($content);
|
||||
$content = Rhymix\Framework\Filters\HTMLFilter::clean($content);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,8 +53,8 @@ else
|
|||
*/
|
||||
if (isset($_SERVER['HTTP_CF_CONNECTING_IP']))
|
||||
{
|
||||
include_once __DIR__ . '/framework/security/ipfilter.php';
|
||||
Rhymix\Framework\Security\IpFilter::getCloudFlareRealIP();
|
||||
include_once __DIR__ . '/framework/filters/ipfilter.php';
|
||||
Rhymix\Framework\Filters\IpFilter::getCloudFlareRealIP();
|
||||
}
|
||||
if (isset($_SERVER['REMOTE_ADDR']) && preg_match('/[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/', $_SERVER['REMOTE_ADDR'], $matches))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ class Config
|
|||
}
|
||||
else
|
||||
{
|
||||
if (self::$_config = Compat\ConfigParser::convert())
|
||||
if (self::$_config = Parsers\ConfigParser::convert())
|
||||
{
|
||||
self::save();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -445,7 +445,7 @@ class Debug
|
|||
return $cache = true;
|
||||
|
||||
case 'ip':
|
||||
if (Security\IpFilter::inRanges(RX_CLIENT_IP, Config::get('debug.allow')))
|
||||
if (Filters\IpFilter::inRanges(RX_CLIENT_IP, Config::get('debug.allow')))
|
||||
{
|
||||
return $cache = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Rhymix\Framework\Security;
|
||||
namespace Rhymix\Framework\Filters;
|
||||
|
||||
/**
|
||||
* The filename filter class.
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Rhymix\Framework\Security;
|
||||
namespace Rhymix\Framework\Filters;
|
||||
|
||||
use Rhymix\Framework\Security;
|
||||
|
||||
/**
|
||||
* The HTML filter class.
|
||||
|
|
@ -462,7 +464,7 @@ class HTMLFilter
|
|||
{
|
||||
$html = substr($html, 0, 4) . ' src=""' . substr($html, 4);
|
||||
}
|
||||
$encoded_properties = \Rhymix\Framework\Security::encrypt(json_encode($attrs));
|
||||
$encoded_properties = Security::encrypt(json_encode($attrs));
|
||||
return substr($html, 0, 4) . ' rx_encoded_properties="' . $encoded_properties . '"' . substr($html, 4);
|
||||
}, $content);
|
||||
}
|
||||
|
|
@ -477,7 +479,7 @@ class HTMLFilter
|
|||
{
|
||||
return preg_replace_callback('!<(div|img)([^>]*)(\srx_encoded_properties="([^"]+)")!i', function($match) {
|
||||
$attrs = array();
|
||||
$decoded_properties = \Rhymix\Framework\Security::decrypt($match[4]);
|
||||
$decoded_properties = Security::decrypt($match[4]);
|
||||
if (!$decoded_properties)
|
||||
{
|
||||
return str_replace($match[3], '', $match[0]);
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Rhymix\Framework\Security;
|
||||
namespace Rhymix\Framework\Filters;
|
||||
|
||||
/**
|
||||
* The IP filter class.
|
||||
|
|
@ -1,6 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Rhymix\Framework\Security;
|
||||
namespace Rhymix\Framework\Filters;
|
||||
|
||||
use Rhymix\Framework\Config;
|
||||
|
||||
/**
|
||||
* The media filter class.
|
||||
|
|
@ -35,8 +37,8 @@ class MediaFilter
|
|||
|
||||
if ($permanently)
|
||||
{
|
||||
\Rhymix\Framework\Config::set('mediafilter.iframe', self::$_iframe_whitelist);
|
||||
\Rhymix\Framework\Config::save();
|
||||
Config::set('mediafilter.iframe', self::$_iframe_whitelist);
|
||||
Config::save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -63,8 +65,8 @@ class MediaFilter
|
|||
|
||||
if ($permanently)
|
||||
{
|
||||
\Rhymix\Framework\Config::set('mediafilter.object', self::$_object_whitelist);
|
||||
\Rhymix\Framework\Config::save();
|
||||
Config::set('mediafilter.object', self::$_object_whitelist);
|
||||
Config::save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -156,7 +156,7 @@ class Lang
|
|||
}
|
||||
elseif (file_exists("$dir/lang.xml"))
|
||||
{
|
||||
$filename = Compat\LangParser::compileXMLtoPHP("$dir/lang.xml", $language === 'ja' ? 'jp' : $language);
|
||||
$filename = Parsers\LangParser::compileXMLtoPHP("$dir/lang.xml", $language === 'ja' ? 'jp' : $language);
|
||||
}
|
||||
elseif (file_exists($dir . '/' . ($language === 'ja' ? 'jp' : $language) . '.lang.php'))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Rhymix\Framework\Compat;
|
||||
namespace Rhymix\Framework\Parsers;
|
||||
|
||||
use Rhymix\Framework\Config;
|
||||
use Rhymix\Framework\DateTime;
|
||||
use Rhymix\Framework\Security;
|
||||
|
||||
/**
|
||||
* Config parser class for XE compatibility.
|
||||
|
|
@ -151,9 +152,9 @@ class ConfigParser
|
|||
}
|
||||
|
||||
// Create new crypto keys.
|
||||
$config['crypto']['encryption_key'] = \Rhymix\Framework\Security::getRandom(64, 'alnum');
|
||||
$config['crypto']['authentication_key'] = \Rhymix\Framework\Security::getRandom(64, 'alnum');
|
||||
$config['crypto']['session_key'] = \Rhymix\Framework\Security::getRandom(64, 'alnum');
|
||||
$config['crypto']['encryption_key'] = Security::getRandom(64, 'alnum');
|
||||
$config['crypto']['authentication_key'] = Security::getRandom(64, 'alnum');
|
||||
$config['crypto']['session_key'] = Security::getRandom(64, 'alnum');
|
||||
|
||||
// Convert language configuration.
|
||||
if (isset($db_info->lang_type))
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Rhymix\Framework\Compat;
|
||||
namespace Rhymix\Framework\Parsers;
|
||||
|
||||
use Rhymix\Framework\Lang;
|
||||
|
||||
|
|
@ -31,12 +31,12 @@ class Security
|
|||
// Clean up HTML content to prevent XSS attacks.
|
||||
case 'html':
|
||||
if (!utf8_check($input)) return false;
|
||||
return Security\HTMLFilter::clean($input);
|
||||
return Filters\HTMLFilter::clean($input);
|
||||
|
||||
// Clean up the input to be used as a safe filename.
|
||||
case 'filename':
|
||||
if (!utf8_check($input)) return false;
|
||||
return Security\FilenameFilter::clean($input);
|
||||
return Filters\FilenameFilter::clean($input);
|
||||
|
||||
// Unknown filters return false.
|
||||
default: return false;
|
||||
|
|
|
|||
|
|
@ -822,7 +822,7 @@ function url_decode($str)
|
|||
*/
|
||||
function removeHackTag($content)
|
||||
{
|
||||
return Rhymix\Framework\Security\HTMLFilter::clean($content);
|
||||
return Rhymix\Framework\Filters\HTMLFilter::clean($content);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -833,7 +833,7 @@ function removeHackTag($content)
|
|||
*/
|
||||
function purifierHtml(&$content)
|
||||
{
|
||||
$content = Rhymix\Framework\Security\HTMLFilter::clean($content);
|
||||
$content = Rhymix\Framework\Filters\HTMLFilter::clean($content);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1036,7 +1036,7 @@ function stripEmbedTagForAdmin(&$content, $writer_member_srl)
|
|||
|
||||
$security_msg = '<div style="border: 1px solid #DDD; background: #FAFAFA; text-align:center; margin: 1em 0;">' .
|
||||
'<p style="margin: 1em;">' . lang('security_warning_embed') . '</p></div>';
|
||||
$content = Rhymix\Framework\Security\MediaFilter::removeEmbeddedMedia($content, $security_msg);
|
||||
$content = Rhymix\Framework\Filters\MediaFilter::removeEmbeddedMedia($content, $security_msg);
|
||||
}
|
||||
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -561,7 +561,7 @@ class adminAdminController extends admin
|
|||
return $item !== '';
|
||||
});
|
||||
$iframe_whitelist = array_unique(array_map(function($item) {
|
||||
return Rhymix\Framework\Security\MediaFilter::formatPrefix($item);
|
||||
return Rhymix\Framework\Filters\MediaFilter::formatPrefix($item);
|
||||
}, $iframe_whitelist));
|
||||
natcasesort($iframe_whitelist);
|
||||
Rhymix\Framework\Config::set('mediafilter.iframe', array_values($iframe_whitelist));
|
||||
|
|
@ -572,7 +572,7 @@ class adminAdminController extends admin
|
|||
return $item !== '';
|
||||
});
|
||||
$object_whitelist = array_unique(array_map(function($item) {
|
||||
return Rhymix\Framework\Security\MediaFilter::formatPrefix($item);
|
||||
return Rhymix\Framework\Filters\MediaFilter::formatPrefix($item);
|
||||
}, $object_whitelist));
|
||||
natcasesort($object_whitelist);
|
||||
Rhymix\Framework\Config::set('mediafilter.object', array_values($object_whitelist));
|
||||
|
|
@ -587,7 +587,7 @@ class adminAdminController extends admin
|
|||
$allowed_ip = array_unique(array_filter($allowed_ip, function($item) {
|
||||
return $item !== '';
|
||||
}));
|
||||
if (!Rhymix\Framework\Security\IpFilter::validateRanges($allowed_ip)) {
|
||||
if (!Rhymix\Framework\Filters\IpFilter::validateRanges($allowed_ip)) {
|
||||
return new Object(-1, 'msg_invalid_ip');
|
||||
}
|
||||
|
||||
|
|
@ -595,7 +595,7 @@ class adminAdminController extends admin
|
|||
$denied_ip = array_unique(array_filter($denied_ip, function($item) {
|
||||
return $item !== '';
|
||||
}));
|
||||
if (!Rhymix\Framework\Security\IpFilter::validateRanges($denied_ip)) {
|
||||
if (!Rhymix\Framework\Filters\IpFilter::validateRanges($denied_ip)) {
|
||||
return new Object(-1, 'msg_invalid_ip');
|
||||
}
|
||||
|
||||
|
|
@ -745,7 +745,7 @@ class adminAdminController extends admin
|
|||
$allowed_ip = array_unique(array_filter($allowed_ip, function($item) {
|
||||
return $item !== '';
|
||||
}));
|
||||
if (!Rhymix\Framework\Security\IpFilter::validate($allowed_ip)) {
|
||||
if (!Rhymix\Framework\Filters\IpFilter::validate($allowed_ip)) {
|
||||
return new Object(-1, 'msg_invalid_ip');
|
||||
}
|
||||
Rhymix\Framework\Config::set('debug.allow', array_values($allowed_ip));
|
||||
|
|
@ -771,17 +771,17 @@ class adminAdminController extends admin
|
|||
|
||||
if ($vars->sitelock_locked === 'Y')
|
||||
{
|
||||
if (!Rhymix\Framework\Security\IpFilter::inRanges('127.0.0.1', $allowed_ip))
|
||||
if (!Rhymix\Framework\Filters\IpFilter::inRanges('127.0.0.1', $allowed_ip))
|
||||
{
|
||||
array_unshift($allowed_ip, '127.0.0.1');
|
||||
}
|
||||
if (!Rhymix\Framework\Security\IpFilter::inRanges(RX_CLIENT_IP, $allowed_ip))
|
||||
if (!Rhymix\Framework\Filters\IpFilter::inRanges(RX_CLIENT_IP, $allowed_ip))
|
||||
{
|
||||
array_unshift($allowed_ip, RX_CLIENT_IP);
|
||||
}
|
||||
}
|
||||
|
||||
if (!Rhymix\Framework\Security\IpFilter::validateRanges($allowed_ip))
|
||||
if (!Rhymix\Framework\Filters\IpFilter::validateRanges($allowed_ip))
|
||||
{
|
||||
return new Object(-1, 'msg_invalid_ip');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -418,8 +418,8 @@ class adminAdminView extends admin
|
|||
function dispAdminConfigSecurity()
|
||||
{
|
||||
// Load embed filter.
|
||||
context::set('mediafilter_iframe', implode(PHP_EOL, Rhymix\Framework\Security\MediaFilter::getIframeWhitelist()));
|
||||
context::set('mediafilter_object', implode(PHP_EOL, Rhymix\Framework\Security\MediaFilter::getObjectWhitelist()));
|
||||
context::set('mediafilter_iframe', implode(PHP_EOL, Rhymix\Framework\Filters\MediaFilter::getIframeWhitelist()));
|
||||
context::set('mediafilter_object', implode(PHP_EOL, Rhymix\Framework\Filters\MediaFilter::getObjectWhitelist()));
|
||||
|
||||
// Admin IP access control
|
||||
$allowed_ip = Rhymix\Framework\Config::get('admin.allow');
|
||||
|
|
@ -518,11 +518,11 @@ class adminAdminView extends admin
|
|||
Context::set('sitelock_message', escape(Rhymix\Framework\Config::get('lock.message')));
|
||||
|
||||
$allowed_ip = Rhymix\Framework\Config::get('lock.allow') ?: array();
|
||||
if (!Rhymix\Framework\Security\IpFilter::inRanges('127.0.0.1', $allowed_ip))
|
||||
if (!Rhymix\Framework\Filters\IpFilter::inRanges('127.0.0.1', $allowed_ip))
|
||||
{
|
||||
array_unshift($allowed_ip, '127.0.0.1');
|
||||
}
|
||||
if (!Rhymix\Framework\Security\IpFilter::inRanges(RX_CLIENT_IP, $allowed_ip))
|
||||
if (!Rhymix\Framework\Filters\IpFilter::inRanges(RX_CLIENT_IP, $allowed_ip))
|
||||
{
|
||||
array_unshift($allowed_ip, RX_CLIENT_IP);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -732,7 +732,7 @@ class fileController extends file
|
|||
}
|
||||
|
||||
// Sanitize filename
|
||||
$file_info['name'] = Rhymix\Framework\Security\FilenameFilter::clean($file_info['name']);
|
||||
$file_info['name'] = Rhymix\Framework\Filters\FilenameFilter::clean($file_info['name']);
|
||||
|
||||
// Set upload path by checking if the attachement is an image or other kinds of file
|
||||
if(preg_match("/\.(jpe?g|gif|png|wm[va]|mpe?g|avi|swf|flv|mp[1-4]|as[fx]|wav|midi?|moo?v|qt|r[am]{1,2}|m4v)$/i", $file_info['name']))
|
||||
|
|
|
|||
|
|
@ -298,12 +298,12 @@ class memberAdminModel extends member
|
|||
{
|
||||
if ($allow_list = ($allow_list === null) ? config('admin.allow') : $allow_list)
|
||||
{
|
||||
return Rhymix\Framework\Security\IpFilter::inRanges(RX_CLIENT_IP, $allow_list);
|
||||
return Rhymix\Framework\Filters\IpFilter::inRanges(RX_CLIENT_IP, $allow_list);
|
||||
}
|
||||
|
||||
if ($deny_list = ($deny_list === null) ? config('admin.deny') : $deny_list)
|
||||
{
|
||||
return !Rhymix\Framework\Security\IpFilter::inRanges(RX_CLIENT_IP, $deny_list);
|
||||
return !Rhymix\Framework\Filters\IpFilter::inRanges(RX_CLIENT_IP, $deny_list);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ class FilenameFilterTest extends \Codeception\TestCase\Test
|
|||
|
||||
foreach ($tests as $from => $to)
|
||||
{
|
||||
$result = Rhymix\Framework\Security\FilenameFilter::clean($from);
|
||||
$result = Rhymix\Framework\Filters\FilenameFilter::clean($from);
|
||||
$this->assertEquals($to, $result);
|
||||
}
|
||||
}
|
||||
|
|
@ -61,7 +61,7 @@ class HTMLFilterTest extends \Codeception\TestCase\Test
|
|||
|
||||
foreach ($tests as $test)
|
||||
{
|
||||
$this->assertEquals($test[1], Rhymix\Framework\Security\HTMLFilter::clean($test[0]));
|
||||
$this->assertEquals($test[1], Rhymix\Framework\Filters\HTMLFilter::clean($test[0]));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -69,41 +69,41 @@ class HTMLFilterTest extends \Codeception\TestCase\Test
|
|||
{
|
||||
$source = '<div><audio autoplay="autoplay" src="./foo/bar.mp3"></audio></div>';
|
||||
$target = '<div><audio src="./foo/bar.mp3"></audio></div>';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
|
||||
$source = '<video autoplay="autoplay" width="320" height="240"><source src="./foo/bar.mp4" type="video/mp4" /></video>';
|
||||
$target = '<video width="320" height="240"><source src="./foo/bar.mp4" type="video/mp4" /></video>';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
|
||||
$source = '<nav>123</nav><section>456</section><article>789</article><aside>0</aside>';
|
||||
$target = '<nav>123</nav><section>456</section><article>789</article><aside>0</aside>';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
}
|
||||
|
||||
public function testHTMLFilterCSS3()
|
||||
{
|
||||
$source = '<div style="display:flex;border-radius:1px 2px 3px 4px;"></div>';
|
||||
$target = '<div style="display:flex;border-radius:1px 2px 3px 4px;"></div>';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
|
||||
$source = '<div style="box-sizing:border-box;box-shadow:5px 5px 2px #123456;"></div>';
|
||||
$target = '<div style="box-sizing:border-box;box-shadow:5px 5px 2px #123456;"></div>';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
|
||||
$source = '<div style="overflow-x:auto;overflow-y:scroll;left:-500px;"></div>';
|
||||
$target = '<div style="overflow-x:auto;overflow-y:scroll;"></div>';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
}
|
||||
|
||||
public function testHTMLFilterEmbeddedMedia()
|
||||
{
|
||||
$source = '<iframe title="Video Test" width="640" height="360" src="http://videofarm.daum.net/controller/video/viewer/Video.html?vid=s474b7BR2zzREo0g7OT7EKo&play_loc=undefined&alert=true" frameborder="0" scrolling="no"></iframe>';
|
||||
$target = '<iframe title="Video Test" width="640" height="360" src="http://videofarm.daum.net/controller/video/viewer/Video.html?vid=s474b7BR2zzREo0g7OT7EKo&play_loc=undefined&alert=true" frameborder="0" scrolling="no"></iframe>';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
|
||||
$source = '<iframe title="Video Test" width="640" height="360" src="http://not-allowed.com/whatever-video.mp4" frameborder="0" scrolling="no"></iframe>';
|
||||
$target = '<iframe title="Video Test" width="640" height="360" frameborder="0" scrolling="no"></iframe>';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
|
||||
$source = '<object type="application/x-shockwave-flash" id="DaumVodPlayer_s474b7BR2zzREo0g7OT7EKo" width="640px" height="360px" align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,3,0,0">' .
|
||||
'<param name="movie" value="http://videofarm.daum.net/controller/player/VodPlayer.swf" />' .
|
||||
|
|
@ -123,33 +123,33 @@ class HTMLFilterTest extends \Codeception\TestCase\Test
|
|||
'<param name="flashvars" value="vid=s474b7BR2zzREo0g7OT7EKo&playLoc=undefined&alert=true" />' .
|
||||
'<embed src="http://videofarm.daum.net/controller/player/VodPlayer.swf" width="640" height="360" type="application/x-shockwave-flash" flashvars="vid=s474b7BR2zzREo0g7OT7EKo&playLoc=undefined&alert=true" allowscriptaccess="never" allownetworking="internal" />' .
|
||||
'</object>';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
|
||||
$source = '<audio src="https://www.youtube.com/whatever"></audio>';
|
||||
$target = '<audio src="https://www.youtube.com/whatever"></audio>';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
|
||||
$source = '<audio src="https://www-youtube.com/whatever"></audio>';
|
||||
$target = '<audio src=""></audio>';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
|
||||
$source = '<video width="320" height="240"><source src="http://api.v.daum.net/something" type="video/mp4" /></video>';
|
||||
$target = '<video width="320" height="240"><source src="http://api.v.daum.net/something" type="video/mp4" /></video>';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
|
||||
$source = '<video width="320" height="240"><source src="http://wrong-site.net/" type="video/mp4" /></video>';
|
||||
$target = '<video width="320" height="240"><source src="" type="video/mp4" /></video>';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
}
|
||||
|
||||
public function testHTMLFilterEditorComponent()
|
||||
{
|
||||
$source = '<img somekey="somevalue" otherkey="othervalue" onmouseover="alert(\'xss\');" editor_component="component_name" src="./foo/bar.jpg" alt="My Picture" style="width:320px;height:240px;" width="320" height="240" />';
|
||||
$target = '<img somekey="somevalue" otherkey="othervalue" editor_component="component_name" src="./foo/bar.jpg" alt="My Picture" style="width:320px;height:240px;" width="320" height="240" />';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
|
||||
$source = '<img somekey="somevalue" otherkey="othervalue" onkeypress="alert(\'xss\');" editor_component="component_name" />';
|
||||
$target = '<img somekey="somevalue" otherkey="othervalue" src="" editor_component="component_name" alt="" />';
|
||||
$this->assertEquals($target, Rhymix\Framework\Security\HTMLFilter::clean($source));
|
||||
$this->assertEquals($target, Rhymix\Framework\Filters\HTMLFilter::clean($source));
|
||||
}
|
||||
}
|
||||
77
tests/unit/framework/filters/IpFilterTest.php
Normal file
77
tests/unit/framework/filters/IpFilterTest.php
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
<?php
|
||||
|
||||
class IpFilterTest extends \Codeception\TestCase\Test
|
||||
{
|
||||
public function testIPv4CIDR()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::inRange('10.0.127.191', '10.0.127.191'));
|
||||
$this->assertFalse(Rhymix\Framework\Filters\IpFilter::inRange('10.1.131.177', '10.1.131.178'));
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::inRange('127.0.0.1', '127.0.0.0/8'));
|
||||
$this->assertFalse(Rhymix\Framework\Filters\IpFilter::inRange('172.34.0.0', '172.16.0.0/12'));
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::inRange('192.168.18.214', '192.168.16.0/22'));
|
||||
$this->assertFalse(Rhymix\Framework\Filters\IpFilter::inRange('192.168.18.214', '192.168.16.0/23'));
|
||||
}
|
||||
|
||||
public function testIPv6CIDR()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::inRange('::1', '::1/128'));
|
||||
$this->assertFalse(Rhymix\Framework\Filters\IpFilter::inRange('::1', '::2'));
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::inRange('2400:cb00::1234', '2400:cb00::/32'));
|
||||
$this->assertFalse(Rhymix\Framework\Filters\IpFilter::inRange('2405:8100::1234', '2400:cb00::/32'));
|
||||
}
|
||||
|
||||
public function testIPv4Wildcard()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::inRange('192.168.134.241', '192.168.134.*'));
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::inRange('192.168.134.241', '192.168.*.*'));
|
||||
$this->assertFalse(Rhymix\Framework\Filters\IpFilter::inRange('192.168.134.241', '192.168.136.*'));
|
||||
$this->assertFalse(Rhymix\Framework\Filters\IpFilter::inRange('192.168.134.241', '192.172.*.*'));
|
||||
}
|
||||
|
||||
public function testIPv4Hyphen()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::inRange('192.168.134.241', '192.168.134.0-192.168.134.255'));
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::inRange('192.168.134.241', '192.168.128.16-192.168.145.0'));
|
||||
$this->assertFalse(Rhymix\Framework\Filters\IpFilter::inRange('192.168.134.241', '192.168.134.242-192.168.244.7'));
|
||||
$this->assertFalse(Rhymix\Framework\Filters\IpFilter::inRange('192.168.134.241', '192.168.100.255-192.168.133.19'));
|
||||
}
|
||||
|
||||
public function testValidator()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::validateRange('192.168.0.1'));
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::validateRange('192.168.0.0/16'));
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::validateRange('192.168.*.*'));
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::validateRange('192.168.*'));
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::validateRange('192.168.0.0-192.168.255.255'));
|
||||
$this->assertTrue(Rhymix\Framework\Filters\IpFilter::validateRange('2400:cb00::/32'));
|
||||
$this->assertFalse(Rhymix\Framework\Filters\IpFilter::validateRange('192.168.0.0~192.168.255.255'));
|
||||
}
|
||||
|
||||
public function testLegacy()
|
||||
{
|
||||
$this->assertTrue(\IpFilter::filter(array('192.168.134.241'), '192.168.134.241'));
|
||||
$this->assertTrue(\IpFilter::filter(array('192.168.134.0-192.168.134.255'), '192.168.134.241'));
|
||||
$this->assertTrue(\IpFilter::filter(array('127.0.0.1', '192.168.134.241'), '192.168.134.241'));
|
||||
$this->assertTrue(\IpFilter::filter(array('192.168.134.*'), '192.168.134.241'));
|
||||
$this->assertTrue(\IpFilter::filter(array('192.168.*'), '192.168.134.241'));
|
||||
$this->assertFalse(\IpFilter::filter(array('127.0.0.1'), '192.168.134.241'));
|
||||
}
|
||||
|
||||
public function testCloudFlareRealIP()
|
||||
{
|
||||
$_SERVER['HTTP_CF_CONNECTING_IP'] = '192.168.134.241';
|
||||
|
||||
$_SERVER['REMOTE_ADDR'] = '192.168.10.1';
|
||||
$this->assertFalse(Rhymix\Framework\Filters\IpFilter::getCloudFlareRealIP());
|
||||
$this->assertEquals('192.168.10.1', $_SERVER['REMOTE_ADDR']);
|
||||
|
||||
$_SERVER['REMOTE_ADDR'] = '108.162.192.121';
|
||||
$this->assertEquals('192.168.134.241', Rhymix\Framework\Filters\IpFilter::getCloudFlareRealIP());
|
||||
$this->assertEquals('192.168.134.241', $_SERVER['REMOTE_ADDR']);
|
||||
|
||||
unset($_SERVER['HTTP_CF_CONNECTING_IP']);
|
||||
$_SERVER['REMOTE_ADDR'] = '192.168.10.1';
|
||||
$this->assertFalse(Rhymix\Framework\Filters\IpFilter::getCloudFlareRealIP());
|
||||
$this->assertEquals('192.168.10.1', $_SERVER['REMOTE_ADDR']);
|
||||
}
|
||||
}
|
||||
58
tests/unit/framework/filters/MediaFilterTest.php
Normal file
58
tests/unit/framework/filters/MediaFilterTest.php
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
<?php
|
||||
|
||||
class MediaFilterTest extends \Codeception\TestCase\Test
|
||||
{
|
||||
public function testWhitelists()
|
||||
{
|
||||
// iframe whitelist as array.
|
||||
$this->assertTrue(in_array('www.youtube.com/', Rhymix\Framework\Filters\MediaFilter::getIframeWhitelist()));
|
||||
$this->assertFalse(in_array('random-website.com/', Rhymix\Framework\Filters\MediaFilter::getIframeWhitelist()));
|
||||
|
||||
// iframe whitelist as regex.
|
||||
$this->assertTrue(strpos(Rhymix\Framework\Filters\MediaFilter::getIframeWhitelistRegex(), '|www\.youtube\.com/') !== false);
|
||||
$this->assertFalse(strpos(Rhymix\Framework\Filters\MediaFilter::getIframeWhitelistRegex(), 'www.youtube.com/') !== false);
|
||||
|
||||
// Match individual URL against iframe whitelist.
|
||||
$this->assertTrue(Rhymix\Framework\Filters\MediaFilter::matchIframeWhitelist('https://www.youtube.com/v'));
|
||||
$this->assertFalse(Rhymix\Framework\Filters\MediaFilter::matchIframeWhitelist('http://www-youtube.com/v'));
|
||||
|
||||
// object whitelist as array.
|
||||
$this->assertTrue(in_array('www.youtube.com/', Rhymix\Framework\Filters\MediaFilter::getObjectWhitelist()));
|
||||
$this->assertFalse(in_array('random-website.com/', Rhymix\Framework\Filters\MediaFilter::getObjectWhitelist()));
|
||||
|
||||
// object whitelist as regex.
|
||||
$this->assertTrue(strpos(Rhymix\Framework\Filters\MediaFilter::getObjectWhitelistRegex(), '|www\.youtube\.com/') !== false);
|
||||
$this->assertFalse(strpos(Rhymix\Framework\Filters\MediaFilter::getObjectWhitelistRegex(), 'www.youtube.com/') !== false);
|
||||
|
||||
// Match individual URL against object whitelist.
|
||||
$this->assertTrue(Rhymix\Framework\Filters\MediaFilter::matchObjectWhitelist('https://www.youtube.com/v'));
|
||||
$this->assertFalse(Rhymix\Framework\Filters\MediaFilter::matchObjectWhitelist('http://www-youtube.com/v'));
|
||||
}
|
||||
|
||||
public function testAddPrefix()
|
||||
{
|
||||
$this->assertFalse(Rhymix\Framework\Filters\MediaFilter::matchIframeWhitelist('http://some.custom.website.com/video.mp4'));
|
||||
Rhymix\Framework\Filters\MediaFilter::addIframePrefix('*.custom.website.com/');
|
||||
$this->assertTrue(Rhymix\Framework\Filters\MediaFilter::matchIframeWhitelist('http://some.custom.website.com/video.mp4'));
|
||||
|
||||
$this->assertFalse(Rhymix\Framework\Filters\MediaFilter::matchObjectWhitelist('http://some.custom.website.com/video.mp4'));
|
||||
Rhymix\Framework\Filters\MediaFilter::addObjectPrefix('*.custom.website.com/');
|
||||
$this->assertTrue(Rhymix\Framework\Filters\MediaFilter::matchObjectWhitelist('http://some.custom.website.com/video.mp4'));
|
||||
}
|
||||
|
||||
public function testRemoveEmbeddedMedia()
|
||||
{
|
||||
$tests = array(
|
||||
'<div><object></object></div>' => '<div></div>',
|
||||
'<div><object><embed></embed></object></div>' => '<div></div>',
|
||||
'<div><object><param /></object></div>' => '<div></div>',
|
||||
'<div><img class="foo" editor_component="multimedia_link" /></div>' => '<div></div>',
|
||||
'<div><img editor_component="multimedia_link"></img></div>' => '<div></div>',
|
||||
);
|
||||
|
||||
foreach ($tests as $from => $to)
|
||||
{
|
||||
$this->assertEquals($to, Rhymix\Framework\Filters\MediaFilter::removeEmbeddedMedia($from));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,77 +0,0 @@
|
|||
<?php
|
||||
|
||||
class IpFilterTest extends \Codeception\TestCase\Test
|
||||
{
|
||||
public function testIPv4CIDR()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('10.0.127.191', '10.0.127.191'));
|
||||
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('10.1.131.177', '10.1.131.178'));
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('127.0.0.1', '127.0.0.0/8'));
|
||||
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('172.34.0.0', '172.16.0.0/12'));
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('192.168.18.214', '192.168.16.0/22'));
|
||||
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('192.168.18.214', '192.168.16.0/23'));
|
||||
}
|
||||
|
||||
public function testIPv6CIDR()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('::1', '::1/128'));
|
||||
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('::1', '::2'));
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('2400:cb00::1234', '2400:cb00::/32'));
|
||||
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('2405:8100::1234', '2400:cb00::/32'));
|
||||
}
|
||||
|
||||
public function testIPv4Wildcard()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.168.134.*'));
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.168.*.*'));
|
||||
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.168.136.*'));
|
||||
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.172.*.*'));
|
||||
}
|
||||
|
||||
public function testIPv4Hyphen()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.168.134.0-192.168.134.255'));
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.168.128.16-192.168.145.0'));
|
||||
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.168.134.242-192.168.244.7'));
|
||||
$this->assertFalse(Rhymix\Framework\Security\IpFilter::inRange('192.168.134.241', '192.168.100.255-192.168.133.19'));
|
||||
}
|
||||
|
||||
public function testValidator()
|
||||
{
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::validateRange('192.168.0.1'));
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::validateRange('192.168.0.0/16'));
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::validateRange('192.168.*.*'));
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::validateRange('192.168.*'));
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::validateRange('192.168.0.0-192.168.255.255'));
|
||||
$this->assertTrue(Rhymix\Framework\Security\IpFilter::validateRange('2400:cb00::/32'));
|
||||
$this->assertFalse(Rhymix\Framework\Security\IpFilter::validateRange('192.168.0.0~192.168.255.255'));
|
||||
}
|
||||
|
||||
public function testLegacy()
|
||||
{
|
||||
$this->assertTrue(\IpFilter::filter(array('192.168.134.241'), '192.168.134.241'));
|
||||
$this->assertTrue(\IpFilter::filter(array('192.168.134.0-192.168.134.255'), '192.168.134.241'));
|
||||
$this->assertTrue(\IpFilter::filter(array('127.0.0.1', '192.168.134.241'), '192.168.134.241'));
|
||||
$this->assertTrue(\IpFilter::filter(array('192.168.134.*'), '192.168.134.241'));
|
||||
$this->assertTrue(\IpFilter::filter(array('192.168.*'), '192.168.134.241'));
|
||||
$this->assertFalse(\IpFilter::filter(array('127.0.0.1'), '192.168.134.241'));
|
||||
}
|
||||
|
||||
public function testCloudFlareRealIP()
|
||||
{
|
||||
$_SERVER['HTTP_CF_CONNECTING_IP'] = '192.168.134.241';
|
||||
|
||||
$_SERVER['REMOTE_ADDR'] = '192.168.10.1';
|
||||
$this->assertFalse(Rhymix\Framework\Security\IpFilter::getCloudFlareRealIP());
|
||||
$this->assertEquals('192.168.10.1', $_SERVER['REMOTE_ADDR']);
|
||||
|
||||
$_SERVER['REMOTE_ADDR'] = '108.162.192.121';
|
||||
$this->assertEquals('192.168.134.241', Rhymix\Framework\Security\IpFilter::getCloudFlareRealIP());
|
||||
$this->assertEquals('192.168.134.241', $_SERVER['REMOTE_ADDR']);
|
||||
|
||||
unset($_SERVER['HTTP_CF_CONNECTING_IP']);
|
||||
$_SERVER['REMOTE_ADDR'] = '192.168.10.1';
|
||||
$this->assertFalse(Rhymix\Framework\Security\IpFilter::getCloudFlareRealIP());
|
||||
$this->assertEquals('192.168.10.1', $_SERVER['REMOTE_ADDR']);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
<?php
|
||||
|
||||
class MediaFilterTest extends \Codeception\TestCase\Test
|
||||
{
|
||||
public function testWhitelists()
|
||||
{
|
||||
// iframe whitelist as array.
|
||||
$this->assertTrue(in_array('www.youtube.com/', Rhymix\Framework\Security\MediaFilter::getIframeWhitelist()));
|
||||
$this->assertFalse(in_array('random-website.com/', Rhymix\Framework\Security\MediaFilter::getIframeWhitelist()));
|
||||
|
||||
// iframe whitelist as regex.
|
||||
$this->assertTrue(strpos(Rhymix\Framework\Security\MediaFilter::getIframeWhitelistRegex(), '|www\.youtube\.com/') !== false);
|
||||
$this->assertFalse(strpos(Rhymix\Framework\Security\MediaFilter::getIframeWhitelistRegex(), 'www.youtube.com/') !== false);
|
||||
|
||||
// Match individual URL against iframe whitelist.
|
||||
$this->assertTrue(Rhymix\Framework\Security\MediaFilter::matchIframeWhitelist('https://www.youtube.com/v'));
|
||||
$this->assertFalse(Rhymix\Framework\Security\MediaFilter::matchIframeWhitelist('http://www-youtube.com/v'));
|
||||
|
||||
// object whitelist as array.
|
||||
$this->assertTrue(in_array('www.youtube.com/', Rhymix\Framework\Security\MediaFilter::getObjectWhitelist()));
|
||||
$this->assertFalse(in_array('random-website.com/', Rhymix\Framework\Security\MediaFilter::getObjectWhitelist()));
|
||||
|
||||
// object whitelist as regex.
|
||||
$this->assertTrue(strpos(Rhymix\Framework\Security\MediaFilter::getObjectWhitelistRegex(), '|www\.youtube\.com/') !== false);
|
||||
$this->assertFalse(strpos(Rhymix\Framework\Security\MediaFilter::getObjectWhitelistRegex(), 'www.youtube.com/') !== false);
|
||||
|
||||
// Match individual URL against object whitelist.
|
||||
$this->assertTrue(Rhymix\Framework\Security\MediaFilter::matchObjectWhitelist('https://www.youtube.com/v'));
|
||||
$this->assertFalse(Rhymix\Framework\Security\MediaFilter::matchObjectWhitelist('http://www-youtube.com/v'));
|
||||
}
|
||||
|
||||
public function testAddPrefix()
|
||||
{
|
||||
$this->assertFalse(Rhymix\Framework\Security\MediaFilter::matchIframeWhitelist('http://some.custom.website.com/video.mp4'));
|
||||
Rhymix\Framework\Security\MediaFilter::addIframePrefix('*.custom.website.com/');
|
||||
$this->assertTrue(Rhymix\Framework\Security\MediaFilter::matchIframeWhitelist('http://some.custom.website.com/video.mp4'));
|
||||
|
||||
$this->assertFalse(Rhymix\Framework\Security\MediaFilter::matchObjectWhitelist('http://some.custom.website.com/video.mp4'));
|
||||
Rhymix\Framework\Security\MediaFilter::addObjectPrefix('*.custom.website.com/');
|
||||
$this->assertTrue(Rhymix\Framework\Security\MediaFilter::matchObjectWhitelist('http://some.custom.website.com/video.mp4'));
|
||||
}
|
||||
|
||||
public function testRemoveEmbeddedMedia()
|
||||
{
|
||||
$tests = array(
|
||||
'<div><object></object></div>' => '<div></div>',
|
||||
'<div><object><embed></embed></object></div>' => '<div></div>',
|
||||
'<div><object><param /></object></div>' => '<div></div>',
|
||||
'<div><img class="foo" editor_component="multimedia_link" /></div>' => '<div></div>',
|
||||
'<div><img editor_component="multimedia_link"></img></div>' => '<div></div>',
|
||||
);
|
||||
|
||||
foreach ($tests as $from => $to)
|
||||
{
|
||||
$this->assertEquals($to, Rhymix\Framework\Security\MediaFilter::removeEmbeddedMedia($from));
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue