Ok, I am not a security expert so I would like to know if my security
measures I have implimented is adequate enough to keep people out. Any
pointers on this would be very helpful as I am trying to impliment a secure
way for people to update a website through the use of a content management
application. Example of code is as follows
// Login form - index.php
<form name="authenticate" method="post" action="auth_done.php">
<input type="text" name="user" size="20" maxlength="20"><br>
<input type="password" name="pw" size="20" maxlength="20"><br>
Select an image to identify yourself as an administrator.<br>
<select name="image">
<option value="image01.jpg">image01</option>
<option value="image02.jpg">image02</option>
<option value="image03.jpg">image03</option>
<option value="image04.jpg">image04</option>
<option value="image05.jpg">image05</option>
</select><br><br>
<input type="submit" name="Login" value="Login">
<input type="reset" name="Reset" value="Reset">
</form>
// Authentication checker - auth_done.php
#############check fields for valid entries in form############
if ((!$u_name) || (!$p_word) || (!$image)){
header("Location: index.php");
exit;
}
############connects to database############
require '/path/to/database/connection/script/dbcon.php';
#############selects database table containing users that are allowed to
use application############
$db_table = 'users';
$sql = "SELECT * from $db_table WHERE un = \"$user\" AND pw =
password(\"$pw\")";
$result = @mysql_query($sql,$dbh) or die("Couldn't execute query");
#############loops through all records to find a match############
$num = mysql_numrows($result);
if ($num !=0) {
#############creates variables for sessions############
$p_hash = "$p_word";
$to_hash = "$image";
#############creates md5 hash of image user selected############
$pstring = md5($to_hash);
#############creates md5 hash of password user entered############
$image_sel = md5(uniqid(microtime($p_word),1));
#############starts session for user############
session_start();
#############registers variables created (md5 of password, username, &
image) in session############
session_register('user');
session_register('$pstring');
session_register('$image_sel');
#############captures users ip address (logging stuff, not listed in this
code for security reasons)############
$ipaddy = $REMOTE_ADDR;
#############echoes success message to authenticated user############
$msg_success = "<b>You have been authorized to make changes to the
website! Your IP address has been recorded and sent to the administrator:
$ipaddy</b>";
} else {
#############this prints if user name and password combination is not
found in database############
print "<p>You are not authorized to use this application!</p>";
exit;
}
Now on each page in the content management app I have these lines of code:
#############Start the session#############
session_start();
#############check session variables#############
if (isset($HTTP_SESSION_VARS['user']) ||
isset($HTTP_SESSION_VARS['$image_sel']) ||
isset($HTTP_SESSION_VARS['$pstring'])) {
$main = "Some kinda message for page in question";
#############connects to database#############
require '/path/to/database/connection/script/dbcon.php';
#############if session variables not registered kick the user back to
login form#############
} else {
header ("Location: index.php");
}
Now just so you know I have changed all the variables to something other
than what I am currently using, however I have made sure that this is a
working example so everything should work as is. Also I have tested this a
few different ways, including: creating a page that tries to include one of
the pages I have my security checks on from another website, linking
directly to a script within the application etc. In any event, I also have
logging setup on each and every script which I have not included here
(different topic), just in case someone does get in I can at least "try" to
find them. Any help, pointers, tutorials, examples, etc. would be
appreciated!!!
TIA
Jas
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php