我知道您绝不应该信任表单中的用户输入,主要是因为有注入SQL的机会。
但是,这是否也适用于唯一输入来自下拉菜单的表单(请参见下文)?
我将其保存$_POST['size']
到一个Session中,然后在整个站点中使用它来查询各种数据库(使用mysqli
Select查询),任何SQL注入肯定会损害(可能会删除)它们。
没有类型输入的用户输入可以查询数据库的区域,只有下拉列表。
<form action="welcome.php" method="post">
<select name="size">
<option value="All">Select Size</option>
<option value="Large">Large</option>
<option value="Medium">Medium</option>
<option value="Small">Small</option>
</select>
<input type="submit">
</form>
您可以像以下示例一样简单地进行操作,以确保发布的大小符合您的期望。
$possibleOptions = array('All', 'Large', 'Medium', 'Small');
if(in_array($_POST['size'], $possibleOptions)) {
// Expected
} else {
// Not Expected
}
如果要使用的PHP> = 5.3.0版本,请使用mysqli_ *来保存结果。如果正确使用,这将有助于sql注入。
我理解,您永远不应该信任表单中的用户输入,这主要是由于SQL注入的可能性。 然而,这是否也适用于唯一输入来自下拉列表(见下文)的表单? 我保存的到一个会话,然后使用整个网站查询各种数据库(与选择查询)和任何SQL注入肯定会伤害(可能下降)他们。 没有用于查询数据库的键入用户输入区域,只有下拉列表。
问题内容: 我正在使用MySQL API的功能 根据文档,它转义以下字符: 现在,我查看了OWASP.org的ESAPI安全库,并在Python端口中包含以下代码(http://code.google.com/p/owasp- esapi-python/source/browse/esapi/codecs/mysql。 py ): 现在,我想知道是否真的需要转义所有这些字符。我知道为什么%和_在那
问题内容: 我有一个现有的代码,其中应用程序根据很多条件生成不同的sql并通过hibernate会话createSQLQuery()执行它们。在这里,这些参数与作为普通字符串替换驻留在java类中的sql字符串相连接。现在的问题是,我需要防止sql注入。因此,为此,我必须使用getNamedQuery()并绑定参数,以便hibernate将处理特殊字符。但是问题在于将字符串sql的字符串移动到xm
我希望我的网站允许用户使用下拉菜单来过滤MySQL提供的数据列表。下拉菜单中的选项用于以下方式: 我的问题是:我是否需要担心从预定义的下拉列表选项注入数据库?谢谢
问题内容: 我有以下代码: 在这种情况下,我需要mysql_real_escape_string还是可以吗? 问题答案: 不,在使用准备好的语句时,您不必自己逃避价值 (即,您不需要调用):DB引擎将自己执行该操作。 (实际上,如果您正在调用并使用绑定参数,则您的字符串将被转义两次- 并不是很好:您最终会到处转义字符…) 附带说明:您的值以整数形式传递 (如所示),因此即使您未使用准备好的语句,也
问题内容: 在http://www.justinshattuck.com/2007/01/18/mysql-injection-cheat- sheet/?akst_action=share- this上 ,有一节声称您可以使用某些亚洲字符编码绕过mysql_real_escape_string 用BIG5或GBK绕过mysql_real_escape_string() “注入线” に关する追加情