Skip to content

Commit e9ca96b

Browse files
committed
Integer id replaced with random string
1 parent 7d2ee57 commit e9ca96b

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

db.scheme

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
CREATE TABLE IF NOT EXISTS notes(
2-
id INTEGER PRIMARY KEY NOT NULL,
2+
id TEXT PRIMARY KEY NOT NULL,
33
encrypted TEXT NOT NULL
44
);

handlers.go

+11-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
package tornote
1818

1919
import (
20+
"crypto/rand"
2021
"database/sql"
22+
"encoding/base64"
2123
"fmt"
2224
"net/http"
2325
"path/filepath"
@@ -77,14 +79,20 @@ func readNoteHandler(db *sql.DB) http.Handler {
7779
func saveNoteHandler(db *sql.DB) http.Handler {
7880
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
7981
encrypted := r.FormValue("body")
82+
secret := make([]byte, 11)
8083

81-
res, err := db.Exec("INSERT INTO notes (encrypted) VALUES (?)", encrypted)
84+
// Generate random data for note id
85+
_, err := rand.Read(secret)
8286
if err != nil {
83-
http.Error(w, err.Error(), http.StatusBadRequest)
87+
http.Error(w, err.Error(), http.StatusInternalServerError)
8488
return
8589
}
8690

87-
id, err := res.LastInsertId()
91+
// Encode note id with URL safe format
92+
id := base64.RawURLEncoding.EncodeToString(secret)
93+
94+
// Save data to database
95+
_, err = db.Exec("INSERT INTO notes (id, encrypted) VALUES (?, ?)", id, encrypted)
8896
if err != nil {
8997
http.Error(w, err.Error(), http.StatusBadRequest)
9098
return

public/main.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ $(document).ready(function() {
77
event.preventDefault();
88
var form = $(this);
99
var text = form.find("textarea").val();
10-
var secret = sjcl.codec.base64.fromBits(sjcl.random.randomWords(2));
10+
var secret = sjcl.codec.base64url.fromBits(sjcl.random.randomWords(3));
1111
var encrypted = sjcl.encrypt(secret, text);
1212

1313
$.ajax({
1414
url: form.attr("action"),
1515
method: "POST",
1616
data: {body: encrypted.toString()},
1717
success: function(id) {
18-
var link = window.location.href.toString() + id + "#" + secret.toString();
18+
var link = window.location.href.toString() + id + "#" + secret;
1919
$("#secret_link").text(link);
2020
$("#note").addClass("hidden");
2121
$("#done").removeClass("hidden");

0 commit comments

Comments
 (0)