我正在设计一个基于网络的php报告系统。它涉及插入和更新到mysql服务器的多个页面。基本上,我希望有人能够登录,启动报告,然后逐步完成相当长的报告流程。在他们简单地填写excel电子表格之前。我基本上设置了得分表的$ _SESSION [$ var] =(自动增量ID)。
$returnQuery = "Select AssessmentID FROM opsassessment.assessmentscores WHERE Date = '$Date' AND InspectorID = '$inspectorResult2[0]'
AND PlantAssistID = '$assistResult2[0]' AND Plant = '$plantResult2[0]'";
$return = mysql_query ($returnQuery);
$return2 = mysql_fetch_row($return);
$_SESSION["return2"] = $return2[0];
echo "The ID for this session is: " . $_SESSION["return2"];
然后我将会话变量分配给每个页面中的变量。然后使用该变量使用来自多个复选框的数据更新assessmentcores表。我有两个问题:
这样做有“更好”的方法吗?模糊,我知道。虽然系统确实有效,但我怀疑有一种更简单或更传统的做法。
我在运行使用会话时有多少安全风险? 注意:这是一个封闭的网络,因此公司外的任何人都不应该能够访问网页,除非网络已被黑客入侵。另外,我已经实现了SQL注入预防,例如剥离HTML和特殊字符。
任何意见和/或反馈都将不胜感激。
答案 0 :(得分:1)
会话数据与服务器一样安全。除非您选择这样做,否则会话中存储 IN 的所有数据都不是物理传输给用户的。
每个(或应该)传输给用户的唯一与会话相关的数据是会话的ID。
但是,在会话中存储ID号可能会有问题。考虑用户大致在同一时间启动两个报告的情况。最后启动的报告将覆盖第一个报告的ID号,现在两个窗口中的所有操作都会影响报告#2。
答案 1 :(得分:0)
会话意味着要完全正确地做你正在做的事情。
它们比其他选项更安全,因为它们的存储是服务器端(与cookie存储相对),所以有人可以访问会话的唯一方法是它们是否可以访问Web服务器的会话目录,如果发生这种情况你有更大的问题需要担心。
可以窃取会话,但攻击者需要用户的会话cookie。
但是继续像你在做的那样,存储行的主要ID以防止额外的查询,这是它应该完成的方式(我会直接使用$ _SESSION变量,而不是将其复制到另一个var)
有关SO的会话安全性的更多信息: