summaryrefslogtreecommitdiff
path: root/post.php
diff options
context:
space:
mode:
authorMichael Foster <savetheinternet@tinyboard.org>2013-07-30 16:41:10 -0400
committerMichael Foster <savetheinternet@tinyboard.org>2013-07-30 16:41:10 -0400
commit461084d400620c32ef262aab1f837573f47b0951 (patch)
treec055ed2274cd1492cd952f4bb84886b6a357d2f6 /post.php
parent54714595f7ce2cdbd88de1c536e0ddc97ca71529 (diff)
MySQL's utf8 charset only supports up to 3-byte symbols. Insterting four byte symbols (U+010000 to U+10FFFF) can be done maliciously to break HTML mark-up.
The ideal solution was to convert to MySQL's utf8mb4 charset, but then we would lose support for MySQL < 5.5.3. In this fix, incompatible characters are encoded as HTML numeric character references (eg. #65536) and just stripped from body_nommarkup.
Diffstat (limited to 'post.php')
-rw-r--r--post.php2
1 files changed, 1 insertions, 1 deletions
diff --git a/post.php b/post.php
index ad045b66..e9041ce8 100644
--- a/post.php
+++ b/post.php
@@ -378,7 +378,7 @@ if (isset($_POST['delete'])) {
wordfilters($post['body']);
- $post['body_nomarkup'] = $post['body'];
+ $post['body_nomarkup'] = preg_replace('/[\x{010000}-\x{ffffff}]/u', '', $post['body']);
if (!($mod && isset($post['raw']) && $post['raw']))
$post['tracked_cites'] = markup($post['body'], true);