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
- 75% confidence
- Finding
- This method accepts arbitrary filter keys and resolves them against model attributes with getattr(self.__model__, key). While it is not classic SQL injection because SQLAlchemy parameterizes values, an attacker or untrusted caller can query on unintended columns and trigger exceptions or unauthorized data access paths if higher layers pass user-controlled filter dictionaries. In a shared DAO handling user records, that broad query surface is more dangerous because it can expose account metadata unrelated to the pet-video purpose.
