记一次老项目的SQL注入处理

问题:sql注入被工信部通报,我们查询接口发现是一个拼接sql,项目有很老的历史,致命缺点:版本未管理,没有线上的最新代码。
架构:tomcat+mysql+spring
解决措施:添加sql注入拦截器。替换线上的class文件。
测试工具:sqlmap。

坑1:tomcat服务器存在缓存,无法更新最新的class文件。https://blog.csdn.net/nlznlz/article/details/77623379
2:sqlmap自带缓存。

缓存未刷新,导致无法获取最新数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 PHP 来录用户的 IP 地址访问次数,并在一分钟内超过10次访问时禁止访问。下面是一个简单的示例代码,可以将这些信息存储在数据库中: 首先,创建一个数据库表来存储用户的 IP 地址和访问次数信息。你可以使用以下 SQL 语句在数据库中创建表: ```sql CREATE TABLE `user_access` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `ip_address` VARCHAR(255) NOT NULL, `access_count` INT DEFAULT 0, `last_access_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); ``` 然后,使用以下 PHP 代码来录用户的访问次数和判断是否需要禁止访问: ```php <?php // 连接到数据库 $hostname = '数据库主机名'; $username = '数据库用户名'; $password = '数据库密码'; $dbname = '数据库名'; $conn = new mysqli($hostname, $username, $password, $dbname); if ($conn->connect_error) { die('数据库连接失败: ' . $conn->connect_error); } // 获取用户的 IP 地址 $ip = $_SERVER['REMOTE_ADDR']; // 检查用户的访问录 $sql = "SELECT * FROM user_access WHERE ip_address = '$ip'"; $result = $conn->query($sql); if ($result->num_rows > 0) { // 用户已有访问录,更新访问次数和最后访问时间 $row = $result->fetch_assoc(); $accessCount = $row['access_count'] + 1; $lastAccessTime = $row['last_access_time']; // 检查是否需要禁止访问 $currentTime = date('Y-m-d H:i:s'); $timeDiff = strtotime($currentTime) - strtotime($lastAccessTime); if ($timeDiff < 60 && $accessCount > 10) { // 短时间内超过10次访问,禁止访问 die('访问频率过高,请稍后再试。'); } // 更新访问次数和最后访问时间 $sql = "UPDATE user_access SET access_count = $accessCount, last_access_time = '$currentTime' WHERE ip_address = '$ip'"; $conn->query($sql); } else { // 用户没有访问录,插入新录 $sql = "INSERT INTO user_access (ip_address, access_count) VALUES ('$ip', 1)"; $conn->query($sql); } // 关闭数据库连接 $conn->close(); ?> ``` 请注意,上述代码只是一个简单的示例,并没有进行安全性验证和防止 SQL 注入的处理。在实际项目中,你需要对代码进行适当的改进和增强,以确保安全性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值