是否有人可以为复选框、单选按钮或下拉菜单执行sql注入(例如,国家、出生年份)?
另外,假设有人在文本字段中输入了猫的名字,那么在我将它们插入到mysql表中之前,运行下面的代码行是否足够?
$catsName = preg_replace('/[^a-z]/i', '', $_POST['yourCat']);或者我必须另外做这件事?
$catsName = mysql_real_escape_string($_POST['yourCat']);发布于 2011-07-10 15:55:08
单选按钮、复选框等在HTML代码中都有一个值选项,可以通过firebug轻松更改(还有很多其他类似的工具)。所以,如果你清理用户给出的所有输入,效果会更好。
至于第二个问题,mysql_real_escape_string就足够了。不需要做preg_replace
发布于 2011-07-10 15:55:53
AD1) SQL-injection可以在任何地方尝试。表单以名称/值对列表的形式传输,无论它是复选框、下拉列表还是其他任何形式。因此,对于您的下拉“国家”,我可以发送给您任意值。
AD2)始终使用DBMS驱动程序函数进行转义和参数绑定。
发布于 2011-07-10 16:00:44
永远假设客户是个邪恶的天才,而且比你聪明。
要避免SQL注入,请始终使用mysql_real_escape_string对客户端数据进行转义,或者更好的做法是使用数据库包装器。
不过,第一个正则表达式仍然有用,但不适用于SQL注入。你可能阻止的是HTML注入-如果你曾经在网页上一字不差地显示输入,你就可以防止任何邪恶的东西,比如一些流氓的javascript。
https://stackoverflow.com/questions/6639909
复制相似问题