php - 破解登录密码测试

标签 php mysql

<分区>

Possible Duplicate:
What is SQL injection?

我看到一些地方他们使用类似的代码

login=' or 1=1 -- & password=' or 1=1 --

从前端登录网站。我想知道这段代码是如何用来破坏登录的。

最佳答案

您给出的示例利用了经过深思熟虑的代码,其中用户输入未被转义并用于查询。 假设有一个带有用户和密码字段的表单 (form.html),它将输入的值传递给 php 脚本 (test.php)。假设用户在两个字段中写入 '' OR 1 =1--

下面的代码不会转义用户输入。您应该使用 mysql_real_escape_string() 或参数化查询来执行此操作。

表单.html:

<form method="POST" action="test.php">
    <input type="text" name="login" value=""><br />
    <input type="text" name="password" value=""><br />
    <input type="submit"/>
</form>    

测试.php:

$name = $_POST['login'];
$pass = $_POST['password'];
echo $name . "<br />";
$sql= "SELECT * FROM users WHERE login = $name AND password = $pass ";
// $sql now contains this command:
// SELECT * FROM users WHERE login= '' OR 1=1-- AND password = '' OR 1 =1-- 
// condition OR 1=1 means that any row satisfies the query
// as long as there is at least 1 row in the table users, authorisation will be succcesful
echo $sql . "<br />";
$result=mysql_query($sql);

关于php - 破解登录密码测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8728857/

相关文章:

具有相同列名的 PHP MySQL 内部连接

php - Magento 实时和暂存的不同配置文件

php - 我的带有 Count/Group By 的 MySQL 查询不能正常工作

android - 在android中按字母顺序获取联系人?

mysql - 在 Ruby on Rails 中自动生成表条目

mySQL 创建一个复杂的查询/ View /报告

php - 如何在模板页面高级自定义字段中从数据库获取字段值 - wordpress

PHP - Laravel 集合或数组的类型提示

javascript - Express JS + Multer 文件上传前查询数据库

mysql - 在 Bash 中声明变量?