Minor fixes (mainly textual) for v{2,3,4,5,7,8,11}
[ssproject1617.git] / report / v3_session.tex
index 5b1f207..fc9cd6c 100644 (file)
-\begin{enumerate}[label={3.\arabic*}]
+\begin{enumerate}[label={V3.\arabic*}]
 
     \item
 
     \item
-    \pass
+      \pass{}
     Verify that there is no custom session manager, or that the custom session
     manager is resistant against all common session management attacks.
     \begin{result}
     Verify that there is no custom session manager, or that the custom session
     manager is resistant against all common session management attacks.
     \begin{result}
-      The application uses the standard \PHP functionality;
-      \code{session_start()} to manage sessions.
+      The application uses the standard \PHP{} functionality; namely
+      \code{session\_start ()} to manage sessions.
     \end{result}
 
 
     \item
     \end{result}
 
 
     \item
-    \pass
+      \pass{}
     Verify that sessions are invalidated when the user logs out.
     \begin{result}
     Verify that sessions are invalidated when the user logs out.
     \begin{result}
-      When a user logs out the application calls \code{forget()}, which destroys
-      the session.
+      When a user logs out the application calls \code{forget()}, which
+      invalidates the session.
     \end{result}
 
 
     \item
     \end{result}
 
 
     \item
-    \fail
+      \fail{}
     Verify that sessions timeout after a specified period of inactivity.
     \begin{result}
     Verify that sessions timeout after a specified period of inactivity.
     \begin{result}
-    There is no functionality which tracks how long a user has been inactive.
+    There is absolutely no functionality which tracks how long a user has been inactive.
     \end{result}
 
 
     \end{result}
 
 
-  \notapplicable{
+  \notapplicable{%
     \item
     Verify that sessions timeout after an administratively-configurable
     maximum time period regardless of activity (an absolute timeout).
   }
 
     \item
     \item
     Verify that sessions timeout after an administratively-configurable
     maximum time period regardless of activity (an absolute timeout).
   }
 
     \item
-    \TODO{}
+      \pass{}
     Verify that all pages that require authentication have easy and visible
     access to logout functionality.
     Verify that all pages that require authentication have easy and visible
     access to logout functionality.
+    \begin{result}
+    The logout functionality is plainly visible on the top right of the
+      application on every page that requires authentication. This is defined in
+      \srcref{admin/themes/header.php}{16-30}
+    \end{result}
+
 
     \item
 
     \item
-    \TODO{}
+      \pass{}
     Verify that the session id is never disclosed in URLs, error messages, or
     logs. This includes verifying that the application does not support URL
     rewriting of session cookies.
     Verify that the session id is never disclosed in URLs, error messages, or
     logs. This includes verifying that the application does not support URL
     rewriting of session cookies.
+    \begin{result}
+      The session id is only used inside the cookie. And the \PHP{}
+      \code{\$\_SESSION} variable is never accessed outside of session
+      management in \srcref{sessions.php}{}.
+    \end{result}
+
 
     \item
 
     \item
-    \TODO{}
+      \fail{}
     Verify that all successful authentication and re-authentication generates
     a new session and session id.
     Verify that all successful authentication and re-authentication generates
     a new session and session id.
+    \begin{result}
+    The application does not destroy the session id upon logout, it merely
+      invalidates it. However \PHP{}'s session managements automatically
+      invalides these session id's after some time. % Discuss?
+    \end{result}
 
 
-  \notapplicable{
-    \item
+
+  \notapplicable{%
+      \item
     Verify that only session ids generated by the application framework are
     recognized as active by the application.
   }
 
     \item
     Verify that only session ids generated by the application framework are
     recognized as active by the application.
   }
 
     \item
-    \TODO{}
+      \pass{}
     Verify that session ids are sufficiently long, random and unique across the
     correct active session base.
     Verify that session ids are sufficiently long, random and unique across the
     correct active session base.
+    \begin{result}
+      The session ids are generated by \PHP{} trough the \code{session\_start}
+      function. These are indeed sufficiently long, random and unique. There are
+      no known attacks against these session ID's.
+    \end{result}
+
 
     \item
 
     \item
-    \TODO{}
+      \fail{}
     Verify that session ids stored in cookies have their path set to an
     appropriately restrictive value for the application, and authentication
     session tokens additionally set the “HttpOnly” and “secure” attributes.
     Verify that session ids stored in cookies have their path set to an
     appropriately restrictive value for the application, and authentication
     session tokens additionally set the “HttpOnly” and “secure” attributes.
+    \begin{result}
+    There is just one cookie for tha application and it's path includes the whole
+      site. However this seems appropriate. The "HttpOnly" and "secure"
+      attributes are not set for this cookie.
+    \end{result}
+
 
     \item
 
     \item
-    \TODO{}
+      \pass{}
     Verify that the application limits the number of active concurrent sessions.
     Verify that the application limits the number of active concurrent sessions.
+    \begin{result}
+      By using \PHP{}'s session handling mechanism the application limits the
+      number of active concurrent sessions adequately.
+    \end{result}
 
     \item
 
     \item
-    \TODO{}
+      \fail{}
     Verify that an active session list is displayed in the account profile or
     similar of each user. The user should be able to terminate any active
     session.
     Verify that an active session list is displayed in the account profile or
     similar of each user. The user should be able to terminate any active
     session.
+    \begin{result}
+    There is no indication whatsoever of any other active sessions a user may
+      have open
+    \end{result}
 
     \item
 
     \item
-    \TODO{}
+      \fail{}
     Verify the user is prompted with the option to terminate all other active
     sessions after a successful change password process.
     Verify the user is prompted with the option to terminate all other active
     sessions after a successful change password process.
+    \begin{result}
+    There is no such option, also notaeable is that there is no confirmation for
+      the password change.
+    \end{result}
 
 \end{enumerate}
 
 \end{enumerate}