В моем php есть таблица, которая показывает данные таблицы в моей базе данных: имя пользователя, адрес электронной почты и т. Д., И я также добавил опцию для удаления. Опция удаления работает правильно, а также показывает сообщение с необходимым паролем перед удалением.
У меня есть пароли, сохраненные в таблице в базе данных, но не зашифрованные.
Проблема в том, что если пользователь просматривает содержимое страницы, он может видеть, какой пароль, поэтому любой может удалить данные из базы данных. Поэтому более или менее опытный пользователь может легко изучить этот контент.
Что я могу сделать, чтобы этого не случилось? Должен ли я скопировать тот же код JavaScript в другой скрипт и удалить его из index.php? Для большей безопасности я попытался использовать хэш на той же странице index.php, но вы также можете увидеть, какой пароль.
Это мой код:
index.php
<table id="professorsRegistered" border="1px">
<tr>
<th colspan="3"><h2>Users</h2></th>
</tr>
<tr>
<th> Name </th>
<th> Email </th>
<th> Delete </th>
</tr>
<?php
$sql = "SELECT * FROM users"; /*Select from table name: users*/
$result = $conn->query($sql); /*Check connection*/
if ($result->num_rows==0){
echo "No users";
}else{
while($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["username"]."</td><td>".$row["email"]."</td><td><a class='eliminate' onClick=\"getPass(".$row['id'].");\">X</a></td></tr>";
}
}
?>
</table>
<?php
$sql = "SELECT password FROM passwords WHERE passwords_id = '1';"; /*Select from table name: passwords*/
$result = $conn->query($sql); /*Check connection*/
$row = $result->fetch_assoc();
$password = $row["password"];
$hash = sha1($password);
/*echo "<p>".$hash."</p>";*/
?>
<script type = "text/javascript">
function getPass(user) {
var securePass = "<?php echo $password ?>";
var pass = prompt("Introduce password to delete: ", "Password");
if (pass!=securePass) {
return confirm('Incorrect Password');
}
else if (pass==securePass) {
window.location='delete.php?id='+user;
}
}
</script>
Delete.php
<?php
include('Conexion.php'); // Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$id = $_GET['id']; // $id is defined
mysqli_query($conn,"DELETE FROM users WHERE id='".$id."'");
mysqli_close($conn);
header("Location: index.php");
?>