#36886: URLField max_length cannot take advantage of 
supports_unlimited_charfield
in DB backend
-------------------------------------+-------------------------------------
     Reporter:  Joel D Sleppy        |                    Owner:  Joel D
                                     |  Sleppy
         Type:  New feature          |                   Status:  closed
    Component:  Database layer       |                  Version:  6.0
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:  wontfix
     Keywords:                       |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  1
  Needs tests:  1                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by Natalia Bidart):

 * resolution:   => wontfix
 * status:  assigned => closed
 * type:  Uncategorized => New feature

Comment:

 Hello Joel! Thank you for your ticket. I think I understand where you are
 coming from, but Django provides general purpose, conservative primitives.
 `URLField` is not just a thin alias for `CharField`; it is a higher level
 abstraction with semantic expectations, including validation and
 reasonable defaults. Requiring an explicit `max_length` is part of that
 contract.

 While URL length limits are not formally standardized, URLs do need
 practical bounds. Allowing unbounded URL storage meaningfully increases
 risk surface. Extremely long URLs are a known vector for denial of service
 and resource exhaustion issues across layers (application, logging,
 middleware, and more), and multiple historical CVEs across frameworks and
 servers have been rooted in unbounded or insufficiently constrained string
 inputs.

 The existence of `supports_unlimited_charfield` at the database backend
 level does not imply that all higher level field types should opt into
 unbounded storage. `CharField` is intentionally low level. `URLField`
 intentionally is not. From an API design perspective, allowing
 `max_length=None` for `URLField` would blur the distinction between
 `CharField` and `URLField`, weaken Django's defensive defaults, and
 introduce subtle backwards compatibility and security review concerns for
 limited practical gain. Developers who genuinely need unbounded URL-like
 strings can already model that explicitly using `CharField` with specific
 validators.

 Given these considerations, the requirement for an explicit maximum length
 on URLField is intentional and appropriate, even on backends that support
 unlimited character fields.
-- 
Ticket URL: <https://code.djangoproject.com/ticket/36886#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/django-updates/0107019bfbe59ff7-28f723c8-cc98-4e15-a536-7d833bf148a5-000000%40eu-central-1.amazonses.com.

Reply via email to