Advertisement
Guest User

Untitled

a guest
Mar 12th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.01 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4. * Clase para manejo de sesiones seguras.
  5. *
  6. * @version: 1.0
  7. *
  8. * @author: Juan Correa.
  9. *
  10. */
  11. class Session
  12. {
  13.  
  14. public $session_id;
  15. private $session_token;
  16.  
  17. public function __construct()
  18. {
  19. $this->initSession();
  20. $this->setSessionToken();
  21. $this->setSessionValue('_session_token_', $this->session_token);
  22. }
  23.  
  24. /*
  25. * Configura caché de sesión y la inicializa
  26. *
  27. * @params: void
  28. *
  29. * @return: void
  30. */
  31. private function initSession()
  32. {
  33. $this->setSessionCacheLimiter('private');
  34. $this->setSessionCacheExpire(0);
  35. $this->setCookieParams();
  36.  
  37. session_start();
  38.  
  39. $this->sessionRegenerateId();
  40. }
  41.  
  42. /*
  43. * Establece el limitador del caché actual
  44. *
  45. * @params: String limiter: el limitador
  46. *
  47. * @return: void
  48. */
  49. private function setSessionCacheLimiter($limiter)
  50. {
  51. session_cache_limiter($limiter);
  52. }
  53.  
  54. /*
  55. * Establece la caducidad del caché en minutos
  56. *
  57. * @params: Int minutes: duración del caché
  58. *
  59. * @return: void
  60. */
  61. private function setSessionCacheExpire($minutes)
  62. {
  63. session_cache_expire($minutes);
  64. }
  65.  
  66. /*
  67. * Establece los parámetros de la cookie. Su efecto dura lo mismo que el script invocador
  68. *
  69. * @params: Int minutes: duración del caché
  70. *
  71. * @return: void
  72. */
  73. private function setCookieParams()
  74. {
  75. $cookie_params = session_get_cookie_params();
  76.  
  77. session_set_cookie_params(
  78. $cookie_params['path'],
  79. $cookie_params['domain'],
  80. 'SECURE',
  81. true);
  82. }
  83.  
  84. /*
  85. * Crea un token personalizado para mayor seguridad
  86. *
  87. * @params: void
  88. *
  89. * @return: void
  90. */
  91. private function setSessionToken()
  92. {
  93. $this->session_token = sha1($this->session_id . 'EscudoDeSeguridad');
  94. }
  95.  
  96. /*
  97. * Asigna el id de sesión al atributo session_id
  98. *
  99. * @params: void
  100. *
  101. * @return: void
  102. */
  103. public function setSessionId()
  104. {
  105. $this->session_id = session_id();
  106. }
  107.  
  108. /*
  109. * Recupera el valor de session_id
  110. *
  111. * @params: void
  112. *
  113. * @return: void
  114. */
  115. public function getSessionId()
  116. {
  117. return $this->session_id;
  118. }
  119.  
  120. /*
  121. * Crea un nuevo valor al array $_SESSION
  122. *
  123. * @params:
  124. * String name_key: nombre de la llave del array de sesión
  125. * String value: el valor asociado a la llave
  126. *
  127. * @return: void
  128. */
  129. public function setSessionValue($name_key, $value)
  130. {
  131. $_SESSION[$name_key] = $value;
  132. }
  133.  
  134. /*
  135. * Recupera un elemento del array $_SESSION
  136. *
  137. * @params: String session_value: la llave del array a recuperar
  138. *
  139. * @return: el valor del elemento del array solicitado. Si no existe, false
  140. */
  141. public function getSessionValue($session_value)
  142. {
  143. if (! empty($_SESSION[$session_value]))
  144. return $_SESSION[$session_value];
  145.  
  146. return false;
  147. }
  148.  
  149. /*
  150. * Elimina un elemento del array $_SESSION
  151. *
  152. * @params: String session_value: la llave del array a eliminar
  153. *
  154. * @return: void
  155. */
  156. public function removeSessionValue($session_value)
  157. {
  158. if (! empty( $_SESSION[$session_value]))
  159. unset ($_SESSION[$session_value]);
  160. }
  161.  
  162. /*
  163. * Valida sesión iniciada usando session_token y session_id
  164. *
  165. * Al autogenerarse al instanciar, siempre deben ser iguales
  166. *
  167. * @params: void
  168. *
  169. * @return: true en caso de éxito, false lo contrario
  170. */
  171. public function checkSession()
  172. {
  173. if ($this->session_token === $_SESSION['_session_token_'] and $this->session_id === session_id() )
  174. return true;
  175.  
  176. return false;
  177. }
  178.  
  179. /*
  180. * Regenera el session_id cuando se deje de hacer referencia al objeto
  181. *
  182. * @params: void
  183. *
  184. * @return: void
  185. */
  186. public function __destruct()
  187. {
  188. $this->sessionRegenerateId();
  189. }
  190.  
  191. /*
  192. * Regenera el session_id
  193. *
  194. * @params: void
  195. *
  196. * @return: void
  197. */
  198. private function sessionRegenerateId()
  199. {
  200. session_regenerate_id();
  201. $this->setSessionId();
  202. }
  203.  
  204. /*
  205. * Borra los datos y destruye la sesión.
  206. *
  207. * @params: void
  208. *
  209. * @return: void
  210. */
  211. public function destroy()
  212. {
  213. $this->session_id = '';
  214. session_unset();
  215. session_destroy();
  216. }
  217.  
  218. }
  219.  
  220. ?>
  221.  
  222. <html>
  223.  
  224. <head>
  225.  
  226. <title>LogIn</title>
  227.  
  228. <link rel="stylesheet" type="text/css" href="Themes/BlueNote/Style.css">
  229.  
  230. <?php
  231.  
  232. require_once('db.php');
  233. require_once('sesionsegura.php');
  234.  
  235.  
  236. $MiSesion = new Session();
  237.  
  238.  
  239. if (isset($_POST['userid'])){
  240.  
  241. $User = $DB->real_escape_string($_POST['userid']);
  242. $Password = $DB->real_escape_string($_POST['password']);
  243.  
  244. // query to find
  245. $query = "SELECT admin
  246. FROM Users WHERE user_id = '" . $User . "' and password = sha2('" . $Password . "', 224)";
  247.  
  248. // execute query
  249. $res = $DB->query($query);
  250. if ($res->num_rows > 0){
  251. $_SESSION['userid'] = $User;
  252. $row = $res->fetch_assoc();
  253. $_SESSION['admin'] = $row['admin'];
  254.  
  255. if ($_SESSION['admin'] == 1)
  256. header("Location: onconshome.php"); // Redirect user to index2.php
  257. else
  258. header("Location: onconshome.php"); // Redirect user to index.php
  259. }else
  260. echo "<div class='form'><h3>Username/password is incorrect.</h3></div>";
  261.  
  262. }
  263.  
  264. ?>
  265. </head>
  266. <body bgcolor="#FFFFF7" text="#000000" link="#000000" vlink="#000000" alink="#FF0000" class="CobaltPageBODY">
  267. <p>
  268. <form name="LoginName" method="POST">
  269. <font class="BlueNoteFormHeaderFont">Log In </font><input type="hidden" value="{FormState}" name="FormState">
  270. <div style="OVERFLOW-Y: auto; OVERFLOW-X: auto; WIDTH: 550px; HEIGHT: 200px">
  271. <table class="BlueNoteFormTABLE" cellpadding="4">
  272. <tr>
  273. <td class="BlueNoteColumnTD" nowrap>
  274. UserID:
  275. <br>
  276. <input type="text" id="userid" name="userid" placeholder="userid"/>
  277. <br>
  278. Password :
  279. <br>
  280. <input type="password" id="password" name="password" placeholder="password" />
  281. <br><br>
  282. <input type="submit" value="Submit" class""submit"/></td>
  283. </tr>
  284.  
  285.  
  286.  
  287. </table>
  288.  
  289. </div>
  290.  
  291. </form>
  292. <!-- END EditableGrid activity_type -->
  293.  
  294.  
  295. </p>
  296. </body>
  297. </html>
  298.  
  299. <?php
  300.  
  301. $DB = new mysqli("localhost:3306", "root", "", "luncz986_sec_title");
  302. if (mysqli_connect_errno()) /* check connection */
  303. die("Connect failed: ".mysqli_connect_error());
  304. return $DB;
  305.  
  306. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement