5092ef72b3fa154929cd598948851eba16c4e230
[ssproject1617.git] / report / v3_session.tex
1 \begin{enumerate}[label={V3.\arabic*}]
2
3 \item
4 \pass{}
5 Verify that there is no custom session manager, or that the custom session
6 manager is resistant against all common session management attacks.
7 \begin{result}
8 The application uses the standard \PHP{} functionality; namely
9 \code{session\_start ()} to manage sessions.
10 \end{result}
11
12
13 \item
14 \pass{}
15 Verify that sessions are invalidated when the user logs out.
16 \begin{result}
17 When a user logs out the application calls \code{forget()}, which
18 invalidates the session.
19 \end{result}
20
21
22 \item
23 \fail{}
24 Verify that sessions timeout after a specified period of inactivity.
25 \begin{result}
26 There is absolutely no functionality which tracks how long a user has been inactive.
27 \end{result}
28
29
30 \notapplicable{%
31 \item
32 Verify that sessions timeout after an administratively-configurable
33 maximum time period regardless of activity (an absolute timeout).
34 }
35
36 \item
37 \pass{}
38 Verify that all pages that require authentication have easy and visible
39 access to logout functionality.
40 \begin{result}
41 The logout functionality is plainly visible on the top right of the
42 application on every page that requires authentication. This is defined in
43 \srcref{admin/themes/header.php}{16{-}30}
44 \end{result}
45
46
47 \item
48 \pass{}
49 Verify that the session id is never disclosed in URLs, error messages, or
50 logs. This includes verifying that the application does not support URL
51 rewriting of session cookies.
52 \begin{result}
53 The session id is only used inside the cookie. And the \PHP{}
54 \code{\$\_SESSION} variable is never accessed outside of session
55 management in \code{sessions.php}.
56 \end{result}
57
58
59 \item
60 \fail{}
61 Verify that all successful authentication and re-authentication generates
62 a new session and session id.
63 \begin{result}
64 The application does not destroy the session id upon logout, it merely
65 invalidates it. However \PHP{}'s session managements automatically
66 invalidates the session id after some time. % Discuss?
67 \end{result}
68
69
70 \setcounter{enumi}{9}
71 \item
72 Verify that only session ids generated by the application framework are
73 recognized as active by the application.
74 \begin{result}
75 Since the session ids come directly from \PHP{}'s session management functionality, only ids generated by \PHP{} will be accepted by the application
76 }
77
78 \item
79 \pass{}
80 Verify that session ids are sufficiently long, random and unique across the
81 correct active session base.
82 \begin{result}
83 The session ids are generated by \PHP{} trough the \code{session\_start}
84 function. These are indeed sufficiently long, random and unique. There are
85 no known attacks against these session IDs.
86 \end{result}
87
88
89 \item
90 \fail{}
91 Verify that session ids stored in cookies have their path set to an
92 appropriately restrictive value for the application, and authentication
93 session tokens additionally set the \code{HttpOnly} and \code{secure} attributes.
94 \begin{result}
95 There is just one cookie for the application and it's path includes the whole
96 site. However this seems appropriate. The \code{HttpOnly} and \code{secure}
97 attributes are not set for this cookie.
98 \end{result}
99
100
101 \setcounter{enumi}{15}
102 \item
103 \pass{}
104 Verify that the application limits the number of active concurrent sessions.
105 \begin{result}
106 By using \PHP{}'s session handling mechanism the application limits the
107 number of active concurrent sessions adequately.
108 \end{result}
109
110 \item
111 \fail{}
112 Verify that an active session list is displayed in the account profile or
113 similar of each user. The user should be able to terminate any active
114 session.
115 \begin{result}
116 There is no indication whatsoever of any other active sessions a user may
117 have open.
118 \end{result}
119
120 \item
121 \fail{}
122 Verify the user is prompted with the option to terminate all other active
123 sessions after a successful change password process.
124 \begin{result}
125 There is no such option, also notable is that there is no confirmation for
126 the password change.
127 \end{result}
128
129 \end{enumerate}