«Нормальный» способ сделать это, AFAIK, это использовать функцию addlashes ().
например:.
$hash = hash('sha1', $username . $salt . $password, true);
$query_safe_hash = addslashes($hash);
$query_safe_username = addslashes($username);
$query = "INSERT INTO DBTable(username, password) VALUES ('$query_safe_username', '$query_safe_hash')";
mysql_query($query) or die("Failed to store credentials!");
Дополнительное примечание: с точки зрения лучших методов шифрования, соль должна иметь известную длину, генерироваться случайным образом и добавляться к вашему хешу перед сохранением в базе данных. Что-то вроде
$salt = generate_random_salt();
$query_safe_hash = addslashes($salt) . addslashes(hash('sha1', $salt . $username . $password, true);
Затем для проверки учетных данных пользователя вы извлекаете сохраненный хеш, удаляете косые черты и удаляете известную длину соли из начала сохраненного хеша и используете ту же соль для создания хеша из предоставленных учетных данных, а затем сравниваете. Это помогает защитить ваш хэш-алгоритм от различных атак криптоанализа (в частности, дифференциального криптоанализа).