Skip to content

Commit fd43cf7

Browse files
committed
Fix vulnerability in passing token to SQL
1 parent 7e0113a commit fd43cf7

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

godrorstore/godrorstore.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func NewWithCleanupInterval(db *sql.DB, cleanupInterval time.Duration) *GodrorSt
2626

2727
func (g *GodrorStore) Find(token string) (b []byte, exists bool, err error) {
2828
fmt.Println("Find")
29-
stmt := `SELECT data FROM sessions WHERE token = '` + token + `' AND current_timestamp < expiry`
29+
stmt := fmt.Sprintf("SELECT data FROM sessions WHERE token = '%x' AND current_timestamp < expiry", token)
3030
row := g.db.QueryRow(stmt)
3131
err = row.Scan(&b)
3232
if err == sql.ErrNoRows {
@@ -39,13 +39,13 @@ func (g *GodrorStore) Find(token string) (b []byte, exists bool, err error) {
3939

4040
func (g *GodrorStore) Commit(token string, b []byte, expiry time.Time) error {
4141
fmt.Println("Commit")
42-
stmt := `SELECT data FROM sessions WHERE token = '` + token + `'`
42+
stmt := fmt.Sprintf("SELECT data FROM sessions WHERE token = '%x'", token)
4343
row := g.db.QueryRow(stmt)
4444
err := row.Err()
4545
if row.Scan() == sql.ErrNoRows {
4646
fmt.Println("No Row Found")
47-
stmt = `INSERT INTO sessions (token, data, expiry) VALUES ('` + token + `', '%x', to_timestamp('` + string(expiry.Format("2006-01-02 15:04:05.00")) + `', 'YYYY-MM-DD HH24:MI:SS.FF'))`
48-
stmt = fmt.Sprintf(stmt, b)
47+
stmt = `INSERT INTO sessions (token, data, expiry) VALUES ('%x', '%x', to_timestamp('` + string(expiry.Format("2006-01-02 15:04:05.00")) + `', 'YYYY-MM-DD HH24:MI:SS.FF'))`
48+
stmt = fmt.Sprintf(stmt, token, b)
4949
fmt.Println(stmt)
5050
_, err := g.db.Exec(stmt)
5151
if err != nil {
@@ -58,8 +58,8 @@ func (g *GodrorStore) Commit(token string, b []byte, expiry time.Time) error {
5858
}
5959

6060
fmt.Println("Update session data")
61-
stmt = `UPDATE sessions SET data = '%x', expiry = to_timestamp('` + string(expiry.Format("2006-01-02 15:04:05.00")) + `', 'YYYY-MM-DD HH24:MI:SS.FF') WHERE token = '` + token + `'`
62-
stmt = fmt.Sprintf(stmt, b)
61+
stmt = `UPDATE sessions SET data = '%x', expiry = to_timestamp('` + string(expiry.Format("2006-01-02 15:04:05.00")) + `', 'YYYY-MM-DD HH24:MI:SS.FF') WHERE token = '%x'`
62+
stmt = fmt.Sprintf(stmt, b, token)
6363
_, err = g.db.Exec(stmt)
6464
if err != nil {
6565
return err
@@ -70,7 +70,7 @@ func (g *GodrorStore) Commit(token string, b []byte, expiry time.Time) error {
7070

7171
func (g *GodrorStore) Delete(token string) error {
7272
fmt.Println("Delete")
73-
stmt := `DELETE FROM session WHERE token = '` + token + `'`
73+
stmt := fmt.Sprintf("DELETE FROM session WHERE token = '%x'", token)
7474
_, err := g.db.Exec(stmt)
7575
return err
7676
}

0 commit comments

Comments
 (0)