我做了一个易受 sql 注入攻击的登录。这是伟大的。但我想避免有人在登录时使用 DROP TABLE。例如,我能否以某种方式检查输入是否包含诸如 drop 或 table 之类的单词。
谢谢。
我做了一个易受 sql 注入攻击的登录。这是伟大的。但我想避免有人在登录时使用 DROP TABLE。例如,我能否以某种方式检查输入是否包含诸如 drop 或 table 之类的单词。
谢谢。
我建议您使用我的简单PDO 数据库库,它将解决您的 SQL 注入问题。
阅读代码,它不是很长(~3kb),它会教你如何使用准备好的语句来处理数据库查询。然后,稍后您可以迁移到具有迁移、查询构建器和 ORM 实现等功能的真实数据库库。
$pdo = new PDO(...)
$name = $_POST['name'];
// @todo make sure it's a good name
$statement = $pdo->prepare('INSERT INTO `user` (`name`) VALUES (?)');
$statement->execute(array($name));
$user_id = $pdo->lastInsertId();
好的,所以我只是重新阅读了您的问题,您实际上想要一个 SQL 注入演示系统 - 您只是不希望它容易受到某些类型的 SQL 注入的影响?这听起来像是一个不值得麻烦的坏主意。设置一个可以销毁并重新创建每个页面请求的 SQLite 数据库,然后您无需担心。
if (false !== stripos($_POST['username'], 'DROP'))
如果您想知道在发布的“用户名”字段中是否提到了“DROP”一词,它将起作用。