0

我做了一个易受 sql 注入攻击的登录。这是伟大的。但我想避免有人在登录时使用 DROP TABLE。例如,我能否以某种方式检查输入是否包含诸如 drop 或 table 之类的单词。

谢谢。

4

2 回答 2

0

我建议您使用我的简单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 数据库,然后您无需担心。

于 2012-10-25T19:17:31.757 回答
0

if (false !== stripos($_POST['username'], 'DROP'))如果您想知道在发布的“用户名”字段中是否提到了“DROP”一词,它将起作用。

于 2012-10-25T19:43:00.367 回答