首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速实现php安全性

问快速实现php安全性
EN

Stack Overflow用户
提问于 2013-01-23 19:06:45
回答 4查看 107关注 0票数 0

在接下来的几天里,我将不得不保护一个网站(我做到了),我想我会写到config.php文件(在所有的php页面中调用)。

代码语言:javascript
复制
while($value = current($_POST)){
    $_POST[key($_POST)]=htmlentities($value);
    next($_POST);
}

在config.php中,你认为我会是来自各种xxs和sql注入的siscuro吗?我知道每个字段都必须以不同的方式进行验证,数据库最好不要包含html实体。

1)除了post、get (可能还有request)之外,我还应该过滤哪些其他变量? 2)这种方法可以避免多次代码注入(xxs、sql注入等)?

编辑:如果用mysql_real_escape_string代替htmlentities会更好呢?我想要确保安全性不完整,数据验证等。但是可以防止注入: sql和xxs以及其他注入。

编辑:当然,如果你使用"ddd“也会起到删除php标签的作用(尽管我确信这个网站不会运行)

谢谢:)

EN

回答 4

Stack Overflow用户

发布于 2013-01-23 19:20:22

请不要在同一意义上使用“安全”和“快速”这两个词。它可能不会有好的结局。:)

正如您已经提到的,不将HTML实体存储在数据库中会更“干净”,而是在显示输出时应用htmlentities (或者使用模板引擎为您处理转义)。

对于SQL注入,htmlentities没有帮助(想象一下,例如htmlentities("' OR 1=1 --"))。为此,您需要mysql_real_escape_string或$pdo->quote之类的东西--尽管准备好的语句是最好的方法。

然而,这是非常困难的(如果不是不可能的话)来应用在顶部的方法。最好查看一下您使用的SQL语句,并将它们替换为准备好的语句,或者至少转义您在这些查询中使用的任何输入参数。

票数 2
EN

Stack Overflow用户

发布于 2013-01-23 19:20:37

如果真的这么简单,每个人都会这么做。因此,没有人会建议使用良好的实践来编写安全的代码。这不是一条可行的道路。有时,您可能真的需要数据库中的那些值,而这些值可能会被您的“全部捕获”代码错误地更改。“包罗万象”并不是一种安全的验证机制。

在接下来的几天里我将不得不确保一个网站的安全

如果您继续尝试以这种方式保护您的站点,那么在接下来的几天里,它也只能在最好的情况下保持的安全。

票数 2
EN

Stack Overflow用户

发布于 2013-01-23 19:55:08

虽然在构建站点时做这类事情通常是个好主意。不同的网站需要不同的安全级别是合乎逻辑的。仅供您访问的本地网站可能不需要,而小型"intranet“样式的网站可能只需要基本的安全性。

如果你认为这个网站只需要一个安全级别,可以在几天内实现。然后我会说,第一步是返回并确保所有用户输入都通过mysql_real_escape_string()函数或类似的函数运行,这取决于你的API (看起来这个函数现在实际上已经过时了)。此函数对特殊字符进行转义,因此可以安全地将其放入MySQL查询中。

其次,在某些情况下,您可以使用像preg_match()这样的函数来检查字符串是否与预期的输入匹配。这意味着您可以检查地址是否与地址格式匹配,是否与姓名和电话号码相同,等等。这意味着您可以轻松地限制长度和数据类型。

我认为这是保护站点的第一步,这意味着用户不能(微不足道地)将他们喜欢的任何东西保存到您的数据库中。

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

https://stackoverflow.com/questions/14478197

复制
相关文章

相似问题

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