Files
codeql/go/ql/test/query-tests/Security/CWE-089/mongoDB.go
2022-05-20 10:07:19 -07:00

84 lines
2.1 KiB
Go

package main
//go:generate depstubber -vendor go.mongodb.org/mongo-driver/bson/primitive D
//go:generate depstubber -vendor go.mongodb.org/mongo-driver/mongo Pipeline Connect
//go:generate depstubber -vendor go.mongodb.org/mongo-driver/mongo/options "" Client
import (
"context"
"fmt"
"log"
"net/http"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func mongo2(w http.ResponseWriter, r *http.Request) {
// Set client options
clientOptions := options.Client().ApplyURI("mongodb://test:test@localhost:27017")
// Connect to MongoDB
client, err := mongo.Connect(context.TODO(), clientOptions)
if err != nil {
log.Fatal(err)
}
// Check the connection
err = client.Ping(context.TODO(), nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("Connected to MongoDB!")
// Get a handle for your collection
db := client.Database("test")
coll := db.Collection("collection")
untrustedInput := r.Referer()
filter := bson.D{{"name", untrustedInput}}
fieldName := "test"
document := filter
documents := []interface{}{
document,
bson.D{{"name", "Bob"}},
}
matchStage := bson.D{{"$match", filter}}
pipeline := mongo.Pipeline{matchStage}
ctx := context.TODO()
replacement := bson.D{{"location", "NYC"}}
update := bson.D{{"$inc", bson.D{{"age", 1}}}}
// models := nil
coll.Aggregate(ctx, pipeline, nil)
// coll.BulkWrite(ctx, models, nil)
coll.BulkWrite(ctx, nil, nil)
coll.Clone(nil)
coll.CountDocuments(ctx, filter, nil)
coll.Database()
coll.DeleteMany(ctx, filter, nil)
coll.DeleteOne(ctx, filter, nil)
coll.Distinct(ctx, fieldName, filter)
coll.Drop(ctx)
coll.EstimatedDocumentCount(ctx, nil)
coll.Find(ctx, filter, nil)
coll.FindOne(ctx, filter, nil)
coll.FindOneAndDelete(ctx, filter, nil)
coll.FindOneAndReplace(ctx, filter, nil)
coll.FindOneAndUpdate(ctx, filter, nil)
coll.Indexes()
coll.InsertMany(ctx, documents)
coll.InsertOne(ctx, document, nil)
coll.Name()
coll.ReplaceOne(ctx, filter, replacement)
coll.UpdateMany(ctx, filter, update)
coll.UpdateOne(ctx, filter, update)
coll.Watch(ctx, pipeline)
}