带有单选按钮的mysql注入和表单

时间:2013-02-15 11:31:27

标签: php radio-button sql-injection

我最近询问了question关于只包含单选按钮的表单..有经验的用户回答并告诉我,我对SQL注入很开放。有人可以解释一下吗? - 没有文本用户输入。

4 个答案:

答案 0 :(得分:2)

用户可以轻松编辑HTML或以其他方式更改提交的内容。仅仅因为它们是单选按钮并不意味着它们不能改变数值;他们可以将它们设置为任何东西,包括可能导致注射的值。

常见的浏览器工具使用户能够修改HTTP请求,因此有人可以轻松地将您的单选按钮值更改为任何内容。

答案 1 :(得分:1)

任何用户都可以使用DOM浏览器编辑这些字段,例如Firefox中的Firebug或Chrome中包含的浏览器。 (检查元素选项)

没有用户输入,但用户仍然可以编辑DOM结构并包含。

但不仅要编辑它们。如果您的网站不再安全Cross-Site Scripting Attacks (XSS),则任何人都可以使用自己的输入在自己的计算机或主机中创建表单,并通过POST将其发送到您的网站。

您可以在this site中阅读有关安全性和PHP的更多信息。

除了过滤输入之外,避免SQL注入的最佳方法是使用PDO或预准备语句对数据库进行安全调用。

例如:

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);


// insert one row
$name = 'one';
$value = 1;
$stmt->execute();

答案 2 :(得分:1)

表单提供 a 表示人们向HTTP端点提交数据的方法,但人们不需要使用它来提交数据。例如,他们可以创建自己的表单,也可以手工构建HTTP请求。

您发送给客户的任何内容都不能阻止人们提交他们想要的任何内容。

结束点需要对任何输入安全,因为您无法控制它将接收的输入。

答案 3 :(得分:0)

恶意用户不需要您的表单来为您的服务器创建自己的POST请求。他们只需知道服务器接受的表单密钥,然后就可以创建自己的请求。

如果您允许直接插入查询中的未转义$_POST/$_GET/$_REQUEST/$_COOKIE/(some $_SERVER)值,那么您就会受到影响。

为了安全使用PDO或mysqli的参数化查询。

请阅读这篇文章:How can I prevent SQL injection in PHP?