-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdb.inc.php
More file actions
145 lines (123 loc) · 3.31 KB
/
Copy pathdb.inc.php
File metadata and controls
145 lines (123 loc) · 3.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<?php
/**
* @author Bob S. <Tips@TechnoWizardBob.com>
* @copyright Copyright (c) 2022, Bob S.
* @license MIT
*/
require "session.php";
// Convert the string to ASCII, ignoring any non-ASCII characters
$ascii_only = mb_convert_encoding($username, 'ASCII', 'UTF-8');
if (str_contains($ascii_only, ':') || str_contains($ascii_only, '..')) {
echo "Invalid name!"; // File System Stream or Up level Attack!
exit;
}
// Strip out non a-z chrs
$name = preg_replace('/[^a-z]/', '', strtolower($ascii_only));
$name = str_replace("..", "", ucfirst($name));
$file = "{$name}_sql_lite3.db";
$exists = (file_exists(__DIR__."/".$file)) ? true : false;
if ($exists === false) {
echo "Please have the admin create you an account!";
exit;
}
try {
$pdo = new PDO("sqlite:{$file}");
} catch (PDOException $e) {
echo $e->getMessage();
}
if (isset($_GET['migrate'])) {
try {
$sql = "ALTER TABLE links ADD cat_id INTEGER;";
$pdo->query($sql);
} catch (PDOException $e) {
echo $e->getMessage();
}
try {
$sql = "ALTER TABLE links ADD description TEXT;";
$pdo->query($sql);
} catch (PDOException $e) {
echo $e->getMessage();
}
try {
$sql = "CREATE TABLE IF NOT EXISTS cats (
id INTEGER PRIMARY KEY AUTOINCREMENT,
category TEXT NOT NULL
);";
$pdo->query($sql);
} catch (PDOException $e) {
echo $e->getMessage();
}
exit;
}
if (isset($_GET['new'])) {
try {
$sql = "CREATE TABLE IF NOT EXISTS links (
link_id INTEGER PRIMARY KEY AUTOINCREMENT,
link_name TEXT NOT NULL,
link_href TEXT NOT NULL,
cat_id INTEGER,
description TEXT,
private TEXT NULL
);";
$pdo->query($sql);
} catch (PDOException $e) {
echo $e->getMessage();
}
try {
$sql = "CREATE TABLE IF NOT EXISTS cats (
id INTEGER PRIMARY KEY AUTOINCREMENT,
category TEXT NOT NULL
);";
$pdo->query($sql);
} catch (PDOException $e) {
echo $e->getMessage();
}
try {
$sql = "CREATE TABLE IF NOT EXISTS pwd (
id INTEGER PRIMARY KEY AUTOINCREMENT,
password TEXT NOT NULL
);";
$pdo->query($sql);
} catch (PDOException $e) {
echo $e->getMessage();
}
try {
$sql = "SELECT COUNT(*) AS c FROM pwd LIMIT 2";
$stmt = $pdo->query($sql);
if ($stmt) {
$c = $stmt->fetch(PDO::FETCH_ASSOC);
if ($c["c"] > 0) {
echo "Password Already Set!";
exit;
}
}
} catch (PDOExeception $e) {
echo $e->getMessage();
}
try {
$sql = "INSERT INTO pwd (password) VALUES (:pwd)";
$pdostmt = $pdo->prepare($sql);
if ($pdostmt === false) {
echo "Unable to create password!";
exit;
}
$pdostmt->execute(["pwd"=> password_hash("Temp", PASSWORD_BCRYPT)]);
} catch (PDOException $e) {
echo $e->getMessage();
}
echo "Password set to: Temp";
}
function is_pwd(string $pwd): bool {
try {
$sql = "SELECT password FROM pwd WHERE id=1";
$pdostmt = $GLOBALS['pdo']->prepare($sql);
if ($pdostmt === false ) {
return (empty($pwd)) ? true : false;
}
$pdostmt->execute();
$row = $pdostmt->fetch(PDO::FETCH_ASSOC);
} catch (\PDOException $e) {
return false;
}
return password_verify($pwd, $row['password']);
}