首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >启动具有注入防护功能的网站

启动具有注入防护功能的网站
EN

Stack Overflow用户
提问于 2011-10-28 18:24:10
回答 5查看 136关注 0票数 1

我是一个新的php“开发人员”和SOF网站的新成员。我第一次推出了一个网站,在我的在线研究中,有人告诉我,虽然PHP在表面上可能很容易,但开发人员忽略的最重要的事情是注入。

正如SOF所说的,你应该在提出问题之前进行研究,我也是这样做的,似乎需要mysql_real_escape_string();来转义可能损害数据库的字符。THen我还发现你已经准备好了语句。然而,在SOF和Google上进行搜索,我发现你使用哪一个无关紧要,因为无论哪种方式,用户输入的数据都被用来查询/插入数据库。

所以我现在真的很困惑,因为我发现更多的人支持escape_string语句,也有一些人支持预准备语句。

这就是我正在做的事情:

代码语言:javascript
运行
复制
 For Post variables: 

 $thething = mysql_real_escape_string($_POST['field']);


 For Get variables: 

 $thething = mysql_real_escape_string($_GET['id']);


 For Request variables: 

 $thething = mysql_real_escape_string($_REQUEST['id']);

请一定要让我知道你们的想法。

EN

回答 5

Stack Overflow用户

发布于 2011-10-28 18:32:43

我发现记住总是使用预准备语句比确保所有参数都正确转义要容易得多。因此,我建议使用准备好的语句。

相关问题:

mysqli prepared statements and mysqli_real_escape_string

real_escape_string vs. prepared statements

票数 1
EN

Stack Overflow用户

发布于 2011-10-28 18:32:59

当您将PreparedStatements与占位符一起使用时,它将为您转义输入

代码语言:javascript
运行
复制
SELECT * FROM myTable WHERE `id` = ?

然而,它不支持过程mysql-扩展,是什么原因,为什么许多现有的站点仍然使用mysql_(real_)escape_string(),但你可以在Mysqli或PDO中使用它。我建议您在刚开始开发时使用准备好的语句。

票数 0
EN

Stack Overflow用户

发布于 2011-10-28 18:41:33

我倾向于使用mysql_real_escape_string来避免可能的恶意用户输入。

准备好的语句也实现了同样的目的,所以如果您发现可能忘记手动转义用户输入,可以使用准备好的语句,但在对输入进行转义一段时间后,它就变成了第二天性。

如果您使用的是CakePHP或CodeIgniter等PHP框架,它们通常会提供相同的函数。例如,CodeIgniter的Active Records会为您处理所有输入清理。

额外安全信息:

由于您是web开发的新手(和我一样),也要注意XSS Injections,这是另一个易受攻击的点。

最后,防御性的代码。这在Web开发的情况下更为重要,因为您的网站是可供公众访问的。在通过Javascript验证表单数据的情况下,也可以在PHP脚本中执行验证。这看起来可能是多余的,但是可以绕过JS (一种方法是简单地在浏览器中禁用JS )。

散列时使用Salt passwords,请避免使用md5散列。选择sha256、sha512或bcrypt。

在安全方面,如果你会被攻破,这不是的问题,而是你会被攻陷的问题。安全必须是一个持续的、永无止境的过程。

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

https://stackoverflow.com/questions/7928025

复制
相关文章

相似问题

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