Skip to content

Commit 9df1ac7

Browse files
committed
treat redis and ioredis usage as database access
1 parent 10498c3 commit 9df1ac7

File tree

1 file changed

+33
-0
lines changed
  • javascript/ql/lib/semmle/javascript/frameworks

1 file changed

+33
-0
lines changed

javascript/ql/lib/semmle/javascript/frameworks/NoSQL.qll

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -733,4 +733,37 @@ private module Redis {
733733
)
734734
}
735735
}
736+
737+
/**
738+
* An access to a database through redis
739+
*/
740+
class RedisDatabaseAccess extends DatabaseAccess {
741+
RedisDatabaseAccess() { this = redis().getMember(_).getACall() }
742+
743+
override DataFlow::Node getAQueryArgument() { none() }
744+
}
745+
}
746+
747+
/**
748+
* Provides classes modeling the `ioredis` library.
749+
*
750+
* ```
751+
* import Redis from 'ioredis'
752+
* let client = new Redis(...)
753+
* ```
754+
*/
755+
private module IoRedis {
756+
/**
757+
* Gets an `ioredis` client.
758+
*/
759+
API::Node ioredis() { result = API::moduleImport("ioredis").getInstance() }
760+
761+
/**
762+
* An access to a database through ioredis
763+
*/
764+
class IoRedisDatabaseAccess extends DatabaseAccess {
765+
IoRedisDatabaseAccess() { this = ioredis().getMember(_).getACall() }
766+
767+
override DataFlow::Node getAQueryArgument() { none() }
768+
}
736769
}

0 commit comments

Comments
 (0)