Dynamic attribute access via getattr()
Low
- Category
- Dangerous Code Execution
- Content
if filters: for key, value in filters.items(): query = query.filter(getattr(self.__model__, key) == value) if offset: query = query.offset(offset)- Confidence
- 68% confidence
- Finding
- Using getattr(self.__model__, key) with unvalidated caller-supplied filter keys creates a mass-query surface where arbitrary model columns can be queried. While SQLAlchemy prevents direct SQL injection here, an attacker or unintended caller can probe sensitive fields such as token, email, or deletion flags and perform unauthorized filtering against data this generic DAO exposes.
