mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-08-08 11:53:19 +00:00
Fix: Improvements for security around the AI (#12895)
* Fix: Validate and limit chat question input in ChatStreamingView Add max_length=4000 to ChatStreamingSerializer.q and replace the bare request.data["q"] read with proper serializer.is_valid(raise_exception=True) so oversized or missing questions are rejected with HTTP 400 before reaching the LLM. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix: Add defensive prompt framing to mark document content as untrusted * Also adds a system prompt which is treated higher that this is untrusted stuff --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
889ccfd67a
commit
bb860a5834
@@ -2138,7 +2138,7 @@ class DocumentViewSet(
|
||||
|
||||
|
||||
class ChatStreamingSerializer(serializers.Serializer[dict[str, Any]]):
|
||||
q = serializers.CharField(required=True)
|
||||
q = serializers.CharField(required=True, max_length=4000)
|
||||
document_id = serializers.IntegerField(required=False, allow_null=True)
|
||||
|
||||
|
||||
@@ -2159,12 +2159,11 @@ class ChatStreamingView(GenericAPIView[Any]):
|
||||
if not ai_config.ai_enabled:
|
||||
return HttpResponseBadRequest("AI is required for this feature")
|
||||
|
||||
try:
|
||||
question = request.data["q"]
|
||||
except KeyError:
|
||||
return HttpResponseBadRequest("Invalid request")
|
||||
serializer = self.get_serializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
question = serializer.validated_data["q"]
|
||||
|
||||
doc_id = request.data.get("document_id")
|
||||
doc_id = serializer.validated_data.get("document_id")
|
||||
|
||||
if doc_id:
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user