hypothermic/phpxssblock

阻止试图在您的网页表单上使用 XSS 的恶意脚本小子!

v1.1.0 2019-10-27 00:00 UTC

This package is auto-updated.

Last update: 2024-09-28 03:20:06 UTC


README

阻止尝试通过 XSS 利用您网站的客户 IP 地址。

Screenshot Example

使用方法

查看form.php 示例以更好地了解如何实现此库。

在每页顶部添加

<?php
use HypothermicIT\XSSBlock\XBlock;

if (XBlock::isBlocked($_SERVER['REMOTE_ADDR'])) {
    include 'my-error-page.html';
    exit();
}
?>

并且,在处理用户输入时,通过 XBlock Sanitize 方法验证每个 $_GET$_POST

$username = XBlock::Sanitize($_GET["username"], $_SERVER['REMOTE_ADDR']);

// For example, show it as a HTML paragraph.
echo("<p>Hello " . $username . "</p>");

数据库

此库需要一个数据库来存储被阻止 IP 的列表。设置数据库非常简单,默认包含 MySQL/MariaDB 的实现。您只需创建数据库用户即可。

CREATE USER IF NOT EXISTS `xssblock-user`@`localhost` IDENTIFIED BY "change_me!";
CREATE DATABASE IF NOT EXISTS `XSSBlock`; USE `XSSBlock`;
CREATE TABLE IF NOT EXISTS `XSSBlock`.`Registry`
        (`ip_addr` varchar(48) NOT NULL PRIMARY KEY)
        ENGINE=InnoDB DEFAULT CHARSET=utf8;
GRANT SELECT, INSERT ON `XSSBlock`.`Registry` TO `xssblock-user`@`localhost`;

默认情况下,MySQL 实现将尝试使用用户 xssblock-user 连接到 localhost:3306。您可以在 config.php 中更改设置。

弱点

当然,此项目更多的是为了吓跑攻击者,而不是提供安全。红色屏幕当然看起来很可怕,会让人望而却步。

请记住,一个聪明的攻击者可以通过使用代理/VPN 或连接到 Tor 网络来“更改”他的 IP 地址。