首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在复选框、单选按钮或下拉菜单上执行mysql_real_escape_string?

问在复选框、单选按钮或下拉菜单上执行mysql_real_escape_string?
EN

Stack Overflow用户
提问于 2011-07-10 15:51:19
回答 4查看 1.9K关注 0票数 1

是否有人可以为复选框、单选按钮或下拉菜单执行sql注入(例如,国家、出生年份)?

另外,假设有人在文本字段中输入了猫的名字,那么在我将它们插入到mysql表中之前,运行下面的代码行是否足够?

代码语言:javascript
复制
$catsName = preg_replace('/[^a-z]/i', '', $_POST['yourCat']);

或者我必须另外做这件事?

代码语言:javascript
复制
$catsName = mysql_real_escape_string($_POST['yourCat']);
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-10 15:55:08

单选按钮、复选框等在HTML代码中都有一个值选项,可以通过firebug轻松更改(还有很多其他类似的工具)。所以,如果你清理用户给出的所有输入,效果会更好。

至于第二个问题,mysql_real_escape_string就足够了。不需要做preg_replace

票数 6
EN

Stack Overflow用户

发布于 2011-07-10 15:55:53

AD1) SQL-injection可以在任何地方尝试。表单以名称/值对列表的形式传输,无论它是复选框、下拉列表还是其他任何形式。因此,对于您的下拉“国家”,我可以发送给您任意值。

AD2)始终使用DBMS驱动程序函数进行转义和参数绑定。

票数 0
EN

Stack Overflow用户

发布于 2011-07-10 16:00:44

永远假设客户是个邪恶的天才,而且比你聪明。

要避免SQL注入,请始终使用mysql_real_escape_string对客户端数据进行转义,或者更好的做法是使用数据库包装器。

不过,第一个正则表达式仍然有用,但不适用于SQL注入。你可能阻止的是HTML注入-如果你曾经在网页上一字不差地显示输入,你就可以防止任何邪恶的东西,比如一些流氓的javascript。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6639909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档