Skip to content

Commit e6ae74e

Browse files
Rob Hudsonrobhudson
authored andcommitted
Fix #229: Document constant NONE vs Python's None
1 parent 3263217 commit e6ae74e

File tree

2 files changed

+44
-36
lines changed

2 files changed

+44
-36
lines changed

csp/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,8 @@
4747
"webrtc": None,
4848
"worker-src": None,
4949
# Directives Defined in Other Documents
50-
"upgrade-insecure-requests": None,
51-
"block-all-mixed-content": None, # Deprecated.
50+
"upgrade-insecure-requests": False,
51+
"block-all-mixed-content": False, # Deprecated.
5252
}
5353

5454
DIRECTIVES_T = dict[str, Any]

docs/configuration.rst

Lines changed: 42 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -147,16 +147,26 @@ policy.
147147

148148
.. code-block:: python
149149
150-
from csp.constants import SELF, STRICT_DYNAMIC
150+
from csp.constants import NONE, SELF, STRICT_DYNAMIC
151151
152152
CONTENT_SECURITY_POLICY = {
153153
"DIRECTIVES": {
154-
"default-src": [SELF, "cdn.example.net"],
154+
# No sources allowed for default-src by using `csp.constants.NONE`.
155+
"default-src": [NONE],
155156
"script-src": [SELF, STRICT_DYNAMIC],
156157
"style-src": [SELF],
158+
# Using Python's `None` will not include the directive in the header. Useful
159+
# to override previous settings or when using the decorators.
160+
"base-uri": None,
157161
}
158162
}
159163
164+
.. note::
165+
The CSP keyword ``csp.constants.NONE`` is distinct from Python's ``None`` value. The CSP
166+
keyword ``'none'`` is a special value that signifies that you do not want any sources for
167+
the directive. The ``None`` value is a Python keyword that represents the absence of a value
168+
and when used as the value of a directive, it will remove the directive from the header.
169+
160170
.. note::
161171
Deprecated features of CSP in general have been moved to the bottom of this list.
162172

@@ -166,113 +176,111 @@ policy.
166176

167177
``default-src``
168178
Set the ``default-src`` directive. A ``tuple`` or ``list`` of values,
169-
e.g.: ``("'self'", 'cdn.example.net')``. *["'self'"]*
179+
e.g.: ``("'self'", "cdn.example.net")``. *default=["'self'"]*
170180

171181
``script-src``
172-
Set the ``script-src`` directive. A ``tuple`` or ``list``. *None*
182+
Set the ``script-src`` directive. A ``tuple`` or ``list``. *default=None*
173183

174184
``script-src-attr``
175-
Set the ``script-src-attr`` directive. A ``tuple`` or ``list``. *None*
185+
Set the ``script-src-attr`` directive. A ``tuple`` or ``list``. *default=None*
176186

177187
``script-src-elem``
178-
Set the ``script-src-elem`` directive. A ``tuple`` or ``list``. *None*
188+
Set the ``script-src-elem`` directive. A ``tuple`` or ``list``. *default=None*
179189

180190
``img-src``
181-
Set the ``img-src`` directive. A ``tuple`` or ``list``. *None*
191+
Set the ``img-src`` directive. A ``tuple`` or ``list``. *default=None*
182192

183193
``object-src``
184-
Set the ``object-src`` directive. A ``tuple`` or ``list``. *None*
194+
Set the ``object-src`` directive. A ``tuple`` or ``list``. *default=None*
185195

186196
``media-src``
187-
Set the ``media-src`` directive. A ``tuple`` or ``list``. *None*
197+
Set the ``media-src`` directive. A ``tuple`` or ``list``. *default=None*
188198

189199
``frame-src``
190-
Set the ``frame-src`` directive. A ``tuple`` or ``list``. *None*
200+
Set the ``frame-src`` directive. A ``tuple`` or ``list``. *default=None*
191201

192202
``font-src``
193-
Set the ``font-src`` directive. A ``tuple`` or ``list``. *None*
203+
Set the ``font-src`` directive. A ``tuple`` or ``list``. *default=None*
194204

195205
``connect-src``
196-
Set the ``connect-src`` directive. A ``tuple`` or ``list``. *None*
206+
Set the ``connect-src`` directive. A ``tuple`` or ``list``. *default=None*
197207

198208
``style-src``
199-
Set the ``style-src`` directive. A ``tuple`` or ``list``. *None*
209+
Set the ``style-src`` directive. A ``tuple`` or ``list``. *default=None*
200210

201211
``style-src-attr``
202-
Set the ``style-src-attr`` directive. A ``tuple`` or ``list``. *None*
212+
Set the ``style-src-attr`` directive. A ``tuple`` or ``list``. *default=None*
203213

204214
``style-src-elem``
205-
Set the ``style-src-elem`` directive. A ``tuple`` or ``list``. *None*
215+
Set the ``style-src-elem`` directive. A ``tuple`` or ``list``. *default=None*
206216

207217
``base-uri``
208-
Set the ``base-uri`` directive. A ``tuple`` or ``list``. *None*
218+
Set the ``base-uri`` directive. A ``tuple`` or ``list``. *default=None*
209219

210220
Note: This doesn't use ``default-src`` as a fall-back.
211221

212222
``child-src``
213-
Set the ``child-src`` directive. A ``tuple`` or ``list``. *None*
223+
Set the ``child-src`` directive. A ``tuple`` or ``list``. *default=None*
214224

215225
``frame-ancestors``
216-
Set the ``frame-ancestors`` directive. A ``tuple`` or ``list``. *None*
226+
Set the ``frame-ancestors`` directive. A ``tuple`` or ``list``. *default=None*
217227

218228
Note: This doesn't use ``default-src`` as a fall-back.
219229

220230
``navigate-to``
221-
Set the ``navigate-to`` directive. A ``tuple`` or ``list``. *None*
231+
Set the ``navigate-to`` directive. A ``tuple`` or ``list``. *default=None*
222232

223233
Note: This doesn't use ``default-src`` as a fall-back.
224234

225235
``form-action``
226-
Set the ``FORM_ACTION`` directive. A ``tuple`` or ``list``. *None*
236+
Set the ``form-action`` directive. A ``tuple`` or ``list``. *default=None*
227237

228238
Note: This doesn't use ``default-src`` as a fall-back.
229239

230240
``sandbox``
231-
Set the ``sandbox`` directive. A ``tuple`` or ``list``. *None*
241+
Set the ``sandbox`` directive. A ``tuple`` or ``list``. *default=None*
232242

233243
Note: This doesn't use ``default-src`` as a fall-back.
234244

235245
``report-uri``
236246
Set the ``report-uri`` directive. A ``tuple`` or ``list`` of URIs.
237-
Each URI can be a full or relative URI. *None*
247+
Each URI can be a full or relative URI. *default=None*
238248

239249
Note: This doesn't use ``default-src`` as a fall-back.
240250

241251
``report-to``
242252
Set the ``report-to`` directive. A ``string`` describing a reporting
243-
group. *None*
253+
group. *default=None*
244254

245255
See Section 1.2: https://w3c.github.io/reporting/#group
246256

247257
Also `see this MDN note on <https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/report-uri>`_ ``report-uri`` and ``report-to``.
248258

249259
``manifest-src``
250-
Set the ``manifest-src`` directive. A ``tuple`` or ``list``. *None*
260+
Set the ``manifest-src`` directive. A ``tuple`` or ``list``. *default=None*
251261

252262
``worker-src``
253-
Set the ``worker-src`` directive. A ``tuple`` or ``list``. *None*
263+
Set the ``worker-src`` directive. A ``tuple`` or ``list``. *default=None*
254264

255265
``require-sri-for``
256-
Set the ``require-sri-for`` directive. A ``tuple`` or ``list``. *None*
266+
Set the ``require-sri-for`` directive. A ``tuple`` or ``list``. *default=None*
257267

258268
Valid values: a ``list`` containing ``'script'``, ``'style'``, or both.
259269

260270
Spec: require-sri-for-known-tokens_
261271

262272
``upgrade-insecure-requests``
263-
Include ``upgrade-insecure-requests`` directive. A ``boolean``. *False*
273+
Include ``upgrade-insecure-requests`` directive. A ``boolean``. *default=False*
264274

265275
Spec: upgrade-insecure-requests_
266276

267277
``require-trusted-types-for``
268-
Include ``require-trusted-types-for`` directive.
269-
A ``tuple`` or ``list``. *None*
278+
Include ``require-trusted-types-for`` directive. A ``tuple`` or ``list``. *default=None*
270279

271280
Valid values: ``["'script'"]``
272281

273282
``trusted-types``
274-
Include ``trusted-types`` directive.
275-
A ``tuple`` or ``list``. *None*
283+
Include ``trusted-types`` directive. A ``tuple`` or ``list``. *default=None*
276284

277285
Valid values: a ``list`` of allowed policy names that may include
278286
``default`` and/or ``'allow-duplicates'``
@@ -285,23 +293,23 @@ in terms of the latest implementation of the relevant spec.
285293

286294

287295
``block-all-mixed-content``
288-
Include ``block-all-mixed-content`` directive. A ``boolean``. *False*
296+
Include ``block-all-mixed-content`` directive. A ``boolean``. *default=False*
289297

290298
Related `note on MDN <block-all-mixed-content_mdn_>`_.
291299

292300
Spec: block-all-mixed-content_
293301

294302

295303
``plugin-types``
296-
Set the ``plugin-types`` directive. A ``tuple`` or ``list``. *None*
304+
Set the ``plugin-types`` directive. A ``tuple`` or ``list``. *default=None*
297305

298306
Note: This doesn't use ``default-src`` as a fall-back.
299307

300308
Related `note on MDN <plugin_types_mdn_>`_.
301309

302310

303311
``prefetch-src``
304-
Set the ``prefetch-src`` directive. A ``tuple`` or ``list``. *None*
312+
Set the ``prefetch-src`` directive. A ``tuple`` or ``list``. *default=None*
305313

306314
Related `note on MDN <prefetch_src_mdn_>`_.
307315

0 commit comments

Comments
 (0)