Author: Nikita Popov (nikic)
Date: 2022-03-05T18:16:40+01:00
Commit:
https://github.com/php/web-bugs/commit/d50077c25477efe02fd0647ac81ae89c8c14848e
Raw diff:
https://github.com/php/web-bugs/commit/d50077c25477efe02fd0647ac81ae89c8c14848e.diff
Only allow links to php.net and github.com
Activity on bugs.php.net is pretty much down to link spam now.
Fight it by only allowing php.net and github.com links.
Changed paths:
M include/functions.php
M www/bug.php
M www/report.php
Diff:
diff --git a/include/functions.php b/include/functions.php
index d9e0dc67..9b37d60b 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -195,10 +195,12 @@ function is_spam($string)
return false;
}
- $count = substr_count(strtolower($string), 'http://')
- + substr_count(strtolower($string), 'https://');
- if ($count > 5) {
- return true;
+ if (preg_match_all('/https?:\/\/(\S+)/', $string, $matches)) {
+ foreach ($matches[1] as $match) {
+ if (strpos($match, 'php.net') === false && strpos($match,
'github.com') === false) {
+ return "Due to large amounts of spam, only links to php.net
and github.com (including subdomains like gist.github.com) are allowed.";
+ }
+ }
}
$keywords = [
@@ -245,7 +247,7 @@ function is_spam($string)
];
if (preg_match('/\b('. implode('|', $keywords) . ')\b/i', $string)) {
- return true;
+ return "Comment contains spam word, consider rewording.";
}
return false;
diff --git a/www/bug.php b/www/bug.php
index 433b5d5f..aa90dbed 100644
--- a/www/bug.php
+++ b/www/bug.php
@@ -19,7 +19,6 @@
$obsoletePatchRepository = $container->get(ObsoletePatchRepository::class);
$patchRepository = $container->get(PatchRepository::class);
-define('SPAM_REJECT_MESSAGE', 'Your comment looks like SPAM by its content.
Please consider rewording.');
$email = null;
// Handle preview
@@ -224,8 +223,8 @@
}
// primitive spam detection
- if (is_spam($ncomment)) {
- $errors[] = SPAM_REJECT_MESSAGE;
+ if ($message = is_spam($ncomment)) {
+ $errors[] = $message;
}
if (is_spam($_POST['in']['commentemail'])) {
$errors[] = "Please do not SPAM our bug system.";
@@ -264,8 +263,8 @@
$ncomment = trim($_POST['ncomment']);
// primitive spam detection
- if (is_spam($ncomment)) {
- $errors[] = SPAM_REJECT_MESSAGE;
+ if ($message = is_spam($ncomment)) {
+ $errors[] = $message;
}
$from = $_POST['in']['commentemail'];
@@ -317,8 +316,8 @@
}
// primitive spam detection
- if ($ncomment && is_spam($ncomment)) {
- $errors[] = SPAM_REJECT_MESSAGE;
+ if ($ncomment && $message = is_spam($ncomment)) {
+ $errors[] = $message;
}
if (!empty($_POST['in']['email']) &&
@@ -388,8 +387,8 @@
$from = isset($_POST['in']['commentemail']) ? $_POST['in']['commentemail']
: '';
// primitive spam detection
- if (is_spam($ncomment)) {
- $errors[] = SPAM_REJECT_MESSAGE;
+ if ($message = is_spam($ncomment)) {
+ $errors[] = $message;
}
if (is_spam_user($from)) {
$errors[] = "Please do not SPAM our bug system.";
@@ -417,8 +416,8 @@
}
// primitive spam detection
- if ($ncomment && is_spam($ncomment)) {
- $errors[] = SPAM_REJECT_MESSAGE;
+ if ($ncomment && $message = is_spam($ncomment)) {
+ $errors[] = $message;
}
// Just trusted dev can set CVE-ID
diff --git a/www/report.php b/www/report.php
index 2eacf66a..c42e2876 100644
--- a/www/report.php
+++ b/www/report.php
@@ -52,10 +52,10 @@
} elseif ($_POST['captcha'] != $_SESSION['answer']) {
$errors[] = 'Incorrect Captcha';
}
- if (is_spam($_POST['in']['ldesc']) ||
- is_spam($_POST['in']['expres']) ||
- is_spam($_POST['in']['repcode'])) {
- $errors[] = 'Spam detected';
+ if (($message = is_spam($_POST['in']['ldesc'])) ||
+ ($message = is_spam($_POST['in']['expres'])) ||
+ ($message = is_spam($_POST['in']['repcode']))) {
+ $errors[] = $message;
}
}
--
PHP Webmaster List Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php