feat: Purify for better sanitization
This commit is contained in:
@@ -47,6 +47,7 @@
|
||||
"spatie/laravel-ray": "^1.37",
|
||||
"spatie/laravel-schemaless-attributes": "^2.4",
|
||||
"spatie/url": "^2.2",
|
||||
"stevebauman/purify": "^6.2",
|
||||
"stripe/stripe-php": "^16.2.0",
|
||||
"symfony/yaml": "^7.1.6",
|
||||
"visus/cuid2": "^4.1.0",
|
||||
|
129
composer.lock
generated
129
composer.lock
generated
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "35041f9af7cbf8626f54891f1ede3622",
|
||||
"content-hash": "aa98760c097f486cac380aa701e4317c",
|
||||
"packages": [
|
||||
{
|
||||
"name": "3sidedcube/laravel-redoc",
|
||||
@@ -1883,6 +1883,67 @@
|
||||
],
|
||||
"time": "2024-12-27T00:36:43+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ezyang/htmlpurifier",
|
||||
"version": "v4.18.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/ezyang/htmlpurifier.git",
|
||||
"reference": "cb56001e54359df7ae76dc522d08845dc741621b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/cb56001e54359df7ae76dc522d08845dc741621b",
|
||||
"reference": "cb56001e54359df7ae76dc522d08845dc741621b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"cerdic/css-tidy": "^1.7 || ^2.0",
|
||||
"simpletest/simpletest": "dev-master"
|
||||
},
|
||||
"suggest": {
|
||||
"cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.",
|
||||
"ext-bcmath": "Used for unit conversion and imagecrash protection",
|
||||
"ext-iconv": "Converts text to and from non-UTF-8 encodings",
|
||||
"ext-tidy": "Used for pretty-printing HTML"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"files": [
|
||||
"library/HTMLPurifier.composer.php"
|
||||
],
|
||||
"psr-0": {
|
||||
"HTMLPurifier": "library/"
|
||||
},
|
||||
"exclude-from-classmap": [
|
||||
"/library/HTMLPurifier/Language/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-2.1-or-later"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Edward Z. Yang",
|
||||
"email": "admin@htmlpurifier.org",
|
||||
"homepage": "http://ezyang.com"
|
||||
}
|
||||
],
|
||||
"description": "Standards compliant HTML filter written in PHP",
|
||||
"homepage": "http://htmlpurifier.org/",
|
||||
"keywords": [
|
||||
"html"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/ezyang/htmlpurifier/issues",
|
||||
"source": "https://github.com/ezyang/htmlpurifier/tree/v4.18.0"
|
||||
},
|
||||
"time": "2024-11-01T03:51:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "firebase/php-jwt",
|
||||
"version": "v6.10.2",
|
||||
@@ -8330,6 +8391,72 @@
|
||||
],
|
||||
"time": "2024-03-08T11:35:19+00:00"
|
||||
},
|
||||
{
|
||||
"name": "stevebauman/purify",
|
||||
"version": "v6.2.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/stevebauman/purify.git",
|
||||
"reference": "a449299a3d5f5f8ef177e626721b3f69143890a4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/stevebauman/purify/zipball/a449299a3d5f5f8ef177e626721b3f69143890a4",
|
||||
"reference": "a449299a3d5f5f8ef177e626721b3f69143890a4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ezyang/htmlpurifier": "^4.17",
|
||||
"illuminate/contracts": "^7.0|^8.0|^9.0|^10.0|^11.0",
|
||||
"illuminate/support": "^7.0|^8.0|^9.0|^10.0|^11.0",
|
||||
"php": ">=7.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"orchestra/testbench": "^5.0|^6.0|^7.0|^8.0|^9.0",
|
||||
"phpunit/phpunit": "^8.0|^9.0|^10.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"aliases": {
|
||||
"Purify": "Stevebauman\\Purify\\Facades\\Purify"
|
||||
},
|
||||
"providers": [
|
||||
"Stevebauman\\Purify\\PurifyServiceProvider"
|
||||
]
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Stevebauman\\Purify\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Steve Bauman",
|
||||
"email": "steven_bauman@outlook.com"
|
||||
}
|
||||
],
|
||||
"description": "An HTML Purifier / Sanitizer for Laravel",
|
||||
"keywords": [
|
||||
"Purifier",
|
||||
"clean",
|
||||
"cleaner",
|
||||
"html",
|
||||
"laravel",
|
||||
"purification",
|
||||
"purify"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/stevebauman/purify/issues",
|
||||
"source": "https://github.com/stevebauman/purify/tree/v6.2.2"
|
||||
},
|
||||
"time": "2024-09-24T12:27:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "stripe/stripe-php",
|
||||
"version": "v16.4.0",
|
||||
|
115
config/purify.php
Normal file
115
config/purify.php
Normal file
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
use Stevebauman\Purify\Definitions\Html5Definition;
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Default Config
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This option defines the default config that is provided to HTMLPurifier.
|
||||
|
|
||||
*/
|
||||
|
||||
'default' => 'default',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Config sets
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may configure various sets of configuration for differentiated use of HTMLPurifier.
|
||||
| A specific set of configuration can be applied by calling the "config($name)" method on
|
||||
| a Purify instance. Feel free to add/remove/customize these attributes as you wish.
|
||||
|
|
||||
| Documentation: http://htmlpurifier.org/live/configdoc/plain.html
|
||||
|
|
||||
| Core.Encoding The encoding to convert input to.
|
||||
| HTML.Doctype Doctype to use during filtering.
|
||||
| HTML.Allowed The allowed HTML Elements with their allowed attributes.
|
||||
| HTML.ForbiddenElements The forbidden HTML elements. Elements that are listed in this
|
||||
| string will be removed, however their content will remain.
|
||||
| CSS.AllowedProperties The Allowed CSS properties.
|
||||
| AutoFormat.AutoParagraph Newlines are converted in to paragraphs whenever possible.
|
||||
| AutoFormat.RemoveEmpty Remove empty elements that contribute no semantic information to the document.
|
||||
|
|
||||
*/
|
||||
|
||||
'configs' => [
|
||||
|
||||
'default' => [
|
||||
'Core.Encoding' => 'utf-8',
|
||||
'HTML.Doctype' => 'HTML 4.01 Transitional',
|
||||
'HTML.Allowed' => 'h1,h2,h3,h4,h5,h6,b,u,strong,i,em,s,del,a[href|title],ul,ol,li,p[style],br,span,img[width|height|alt|src],blockquote',
|
||||
'HTML.ForbiddenElements' => '',
|
||||
'CSS.AllowedProperties' => 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align',
|
||||
'AutoFormat.AutoParagraph' => false,
|
||||
'AutoFormat.RemoveEmpty' => false,
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| HTMLPurifier definitions
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify a class that augments the HTML definitions used by
|
||||
| HTMLPurifier. Additional HTML5 definitions are provided out of the box.
|
||||
| When specifying a custom class, make sure it implements the interface:
|
||||
|
|
||||
| \Stevebauman\Purify\Definitions\Definition
|
||||
|
|
||||
| Note that these definitions are applied to every Purifier instance.
|
||||
|
|
||||
| Documentation: http://htmlpurifier.org/docs/enduser-customize.html
|
||||
|
|
||||
*/
|
||||
|
||||
'definitions' => Html5Definition::class,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| HTMLPurifier CSS definitions
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify a class that augments the CSS definitions used by
|
||||
| HTMLPurifier. When specifying a custom class, make sure it implements
|
||||
| the interface:
|
||||
|
|
||||
| \Stevebauman\Purify\Definitions\CssDefinition
|
||||
|
|
||||
| Note that these definitions are applied to every Purifier instance.
|
||||
|
|
||||
| CSS should be extending $definition->info['css-attribute'] = values
|
||||
| See HTMLPurifier_CSSDefinition for further explanation
|
||||
|
|
||||
*/
|
||||
|
||||
'css-definitions' => null,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Serializer
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The storage implementation where HTMLPurifier can store its serializer files.
|
||||
| If the filesystem cache is in use, the path must be writable through the
|
||||
| storage disk by the web server, otherwise an exception will be thrown.
|
||||
|
|
||||
*/
|
||||
|
||||
'serializer' => [
|
||||
'driver' => env('CACHE_STORE', env('CACHE_DRIVER', 'file')),
|
||||
'cache' => \Stevebauman\Purify\Cache\CacheDefinitionCache::class,
|
||||
],
|
||||
|
||||
// 'serializer' => [
|
||||
// 'disk' => env('FILESYSTEM_DISK', 'local'),
|
||||
// 'path' => 'purify',
|
||||
// 'cache' => \Stevebauman\Purify\Cache\FilesystemDefinitionCache::class,
|
||||
// ],
|
||||
|
||||
];
|
@@ -6,7 +6,7 @@
|
||||
<p class="mt-2 text-lg leading-7 text-neutral-300">There has been an error with the following error message:</p>
|
||||
@if ($exception->getMessage() !== '')
|
||||
<div class="mt-6 text-sm text-red-500">
|
||||
{!! Str::sanitize($exception->getMessage()) !!}
|
||||
{!! Purify::clean($exception->getMessage()) !!}
|
||||
</div>
|
||||
@endif
|
||||
<div class="flex items-center mt-10 gap-6">
|
||||
|
Reference in New Issue
Block a user