0

这是突然想到的事情......所以想知道处理的最佳实践是什么,并了解主要 PHP 框架的安全能力..

假设在开发的 Web 应用程序中有一组用户..(在用户模块中)..每个注册用户都将根据他们的权限和访问级别执行基于特权的任务...

现在,由于我们有许多免费的前端调试器,例如 firebug 等...超级管理员用户)这是采取的,可能是通过引用隐藏字段值或系统中的某个地方......

现在,他(当前用户)有可能使用 fire bug 将用户 id 更改为 1(假设 '1' 是超级用户)并提交某种形式..

例如:包含允许用户在系统中执行某些操作的表单.. 让我说它就像“创建帖子”(复选框或下拉列表),然后另一个下拉列表可以选择他是的用户愿意分配(这个用户只能看到系统的一些用户来分配..因为他是中等特权..所以超级用户不在那里)但现在可以说他知道这些超级级别的用户ID,他正在更改某个用户的选定值......假设他选择了一个 id = 101 的用户......在下拉值中它变成了这样......普通用户......现在在 firebug '101 的帮助下' 更改为超级用户的 id 之一.....'1' 或 '2' 或 '3' ..... 所以这允许覆盖,因为我尝试进行类似的更改并且不高兴这怎么可能...

所以我们将如何用最佳实践处理这种情况是我的困境......

我看到唯一的方法是处理这个是......

在保存天气之前检查我们在提交表单时收到的数据是否与我们从加载中获得的数据相同,然后让它们保存或抛出错误....这样做会涉及一些性能,我不确定是这是一件实用且最好的事情......

至少我想知道是否有任何 PHP 框架可以防止这种事情发生?我宁愿说攻击..

请让我从 PHP 极客那里知道这一点......不确定天气这在其他编程语言中是否可能发生......因为我是 PHP 开发人员,我只想知道与 PHP 术语相关的信息......

仅供参考,我正在使用 Yii 框架进行我的开发工作........而且有时也会使用 codeignitor 框架。

4

2 回答 2

5

现在,他(当前用户)有可能使用 fire bug 将用户 id 更改为 1(假设 '1' 是超级用户)并提交某种形式..

依赖客户的数据是完全错误的。基本上,您将登录数据存储在 SESSION 中(例如 user_id),而不是 HTML 格式。但是,通过将所有内容存储在 SESSION 中并不能阻止不良用户获得未经授权的访问(会话劫持)。它只会让它变得更加困难。

至少我想知道是否有任何 PHP 框架可以防止这种事情发生?我宁愿说攻击..

PHP 框架不能保护您免受攻击,保护您的软件是您的工作。但是,加强您的应用程序安全性并不是很困难。下面是常见的攻击图表。

  • 跨站脚本,37%
  • SQL 注入,16%
  • 路径披露,5%
  • 拒绝服务,5%
  • 代码执行,4%
  • 内存损坏,4%
  • 跨站请求伪造,4%
  • 和更多

预防

  • SQL 注入:不要手动连接 SQL 查询。使用 PDO 并准备语句。
  • 跨站点脚本:htmlspecialchars用于显示我们的任何用户输入。
  • 代码执行:不要使用eval.
于 2013-07-17T01:20:41.260 回答
1

恕我直言,您似乎应该有一个基本的身份验证机制,无论是安全令牌、cookies/会话,如果用户告诉系统它自己的 id,这是一个非常明显的陷阱。此外,firebug 是 1 个简单的工具,脚本化的查询将使尝试 ids 1 到 1000000 的速度非常快。

1 方式,基本/摘要身份验证和代码分段,使用要求用户组来防止在 apache 级别访问此脚本。涉及的代码更改不多。令牌将是我的方法,生成一个令牌来验证表单数据,防止用户/萤火虫/脚本查询,但需要更多的 cpu 处理/受到锤击。

cookies/sessions 也可以工作,完全取决于你的环境。我已经经历了所有 4 种场景,根据上下文同样可以很好地工作,也就是说,如果你可以避免加载任何 php [仅限 apache 级别],如果没有安全机制来阻止它们,似乎最好对抗锤击/蛮力尝试耗尽服务器连接。

于 2013-07-17T01:18:45.687 回答