summaryrefslogtreecommitdiff
path: root/docs/narr
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2013-10-20 16:29:12 -0400
committerChris McDonough <chrism@plope.com>2013-10-20 16:29:12 -0400
commitd7550c4f8ae023f9a00d6293ba3c94ca14b412f2 (patch)
treebc3634c3b2c3a647b43cbe715b968997c63c3b52 /docs/narr
parent777112d521e337fefc2e0c217add7ac283d087b3 (diff)
parent2edbe1b61c7ace0a13f0d7242f333982a6fc9fde (diff)
downloadpyramid-d7550c4f8ae023f9a00d6293ba3c94ca14b412f2.tar.gz
pyramid-d7550c4f8ae023f9a00d6293ba3c94ca14b412f2.tar.bz2
pyramid-d7550c4f8ae023f9a00d6293ba3c94ca14b412f2.zip
fix merge conflict and prevent warning from showing up during testing (dont import ITemplateRenderer)
Diffstat (limited to 'docs/narr')
-rw-r--r--docs/narr/security.rst28
-rw-r--r--docs/narr/sessions.rst19
2 files changed, 37 insertions, 10 deletions
diff --git a/docs/narr/security.rst b/docs/narr/security.rst
index 6517fedf8..e85ed823a 100644
--- a/docs/narr/security.rst
+++ b/docs/narr/security.rst
@@ -669,3 +669,31 @@ following interface:
After you do so, you can pass an instance of such a class into the
:class:`~pyramid.config.Configurator.set_authorization_policy` method at
configuration time to use it.
+
+.. _admonishment_against_secret_sharing:
+
+Admonishment Against Secret-Sharing
+-----------------------------------
+
+A "secret" is required by various components of Pyramid. For example, the
+:term:`authentication policy` below uses a secret value ``seekrit``::
+
+ authn_policy = AuthTktAuthenticationPolicy('seekrit', hashalg='sha512')
+
+A :term:`session factory` also requires a secret::
+
+ my_session_factory = SignedCookieSessionFactory('itsaseekreet')
+
+It is tempting to use the same secret for multiple Pyramid subsystems. For
+example, you might be tempted to use the value ``seekrit`` as the secret for
+both the authentication policy and the session factory defined above. This is
+a bad idea, because in both cases, these secrets are used to sign the payload
+of the data.
+
+If you use the same secret for two different parts of your application for
+signing purposes, it may allow an attacker to get his chosen plaintext signed,
+which would allow the attacker to control the content of the payload. Re-using
+a secret across two different subsystems might drop the security of signing to
+zero. Keys should not be re-used across different contexts where an attacker
+has the possibility of providing a chosen plaintext.
+
diff --git a/docs/narr/sessions.rst b/docs/narr/sessions.rst
index f33bc6132..fb5035373 100644
--- a/docs/narr/sessions.rst
+++ b/docs/narr/sessions.rst
@@ -43,24 +43,23 @@ limitations:
It is digitally signed, however, and thus its data cannot easily be
tampered with.
-You can configure this session factory in your :app:`Pyramid`
-application by using the ``session_factory`` argument to the
-:class:`~pyramid.config.Configurator` class:
+You can configure this session factory in your :app:`Pyramid` application
+by using the :meth:`pyramid.config.Configurator.set_session_factory`` method.
.. code-block:: python
:linenos:
- from pyramid.session import UnencryptedCookieSessionFactoryConfig
- my_session_factory = UnencryptedCookieSessionFactoryConfig('itsaseekreet')
-
+ from pyramid.session import SignedCookieSessionFactory
+ my_session_factory = SignedCookieSessionFactory('itsaseekreet')
+
from pyramid.config import Configurator
- config = Configurator(session_factory = my_session_factory)
+ config = Configurator()
+ config.set_session_factory(my_session_factory)
.. warning::
- Note the very long, very explicit name for
- ``UnencryptedCookieSessionFactoryConfig``. It's trying to tell you that
- this implementation is, by default, *unencrypted*. You should not use it
+ By default the :func:`~pyramid.session.SignedCookieSessionFactory`
+ implementation is *unencrypted*. You should not use it
when you keep sensitive information in the session object, as the
information can be easily read by both users of your application and third
parties who have access to your users' network traffic. And if you use this