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
- 84% confidence
- Finding
- This dynamic getattr(self.__model__, key) uses filter keys supplied at runtime without validating that the requested field is an approved column. While SQLAlchemy still parameterizes values and prevents classic SQL injection, an attacker who can influence filters may query on unintended model attributes, trigger exceptions for invalid names, or bypass intended business restrictions by filtering on sensitive/internal fields.
