{ "info": { "author": "paul291", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Internet :: WWW/HTTP :: WSGI", "Topic :: Software Development :: Libraries :: Application Frameworks" ], "description": "Falcon Middleware: Require HTTPS |Build Status| |codecov.io|\n============================================================\n\nThe ``falcon-require-https`` package provides a middleware component\nfor sanity-checking that the incoming request was received over\nHTTPS. While the web server is primarily responsibile for enforcing the\nHTTPS protocol, misconfiguration is still a leading cause of security\nvulnerabilities, and so it can be helpful to perform certain additional\nchecks, such as this one, within the application layer itself.\n\nQuick Links\n-----------\n\n* `View the code `__.\n* `Join the discussion group `__.\n* `Hang out in #falconframework on freenode `__.\n\nInstallation\n------------\n\n.. code:: bash\n\n $ pip install falcon-require-https\n\nUsage\n-----\n\nThe ``RequireHTTPS`` middleware class verifies each incoming request. To use\nit, simply pass an instance to the ``falcon.API()`` initializer:\n\n.. code:: python\n\n from falcon_require_https import RequireHTTPS\n\n app = falcon.API(middleware=[RequireHTTPS()])\n\nAt least one of the following sources must indicate the use of HTTPS:\n\n* The schema of the requested URL\n* The X-Forwarded-Proto header\n* The Forwarded header (only the first hop is checked)\n\nOtherwise, an instance of ``falcon.HTTPBadRequest`` is raised.\n\nCaution\n-------\n\nThis middleware is not meant to replace proper security controls in your\nweb server or load balancer. It is simply meant as a final backstop to\nguard against inadvertent misconfiguration at the networking layer.\n\nCredits\n-------\n\nThis middleware component is based on paul291's original\nproof of concept, which was originally submitted as a PR to the\n`falconry/falcon` repo.\n\nAbout Falcon\n------------\n\nFalcon is a `bare-metal Python web\nframework `__ for building lean and\nmean cloud APIs and app backends. It encourages the REST architectural style,\nand tries to do as little as possible while remaining `highly\neffective `__.\n\n\n.. |Build Status| image:: https://travis-ci.org/falconry/falcon-require-https.svg\n :target: https://travis-ci.org/falconry/falcon-require-https\n.. |codecov.io| image:: https://codecov.io/gh/falconry/falcon-require-https/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/falconry/falcon-require-https", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/falconry/falcon-require-https", "keywords": "wsgi web api framework rest http https tls cloud security", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "falcon-require-https", "package_url": "https://pypi.org/project/falcon-require-https/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/falcon-require-https/", "project_urls": { "Homepage": "https://github.com/falconry/falcon-require-https" }, "release_url": "https://pypi.org/project/falcon-require-https/0.1.0/", "requires_dist": [ "falcon" ], "requires_python": "", "summary": "Falcon middleware for sanity-checking that HTTPS was used for the request.", "version": "0.1.0" }, "last_serial": 2577860, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "43a09738d18e82db575b58ea48e34793", "sha256": "0057b8b5fa6606b3f0bc9eb2a3124da58408839cb9d3978255a6f89c6a2775a6" }, "downloads": -1, "filename": "falcon_require_https-0.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "43a09738d18e82db575b58ea48e34793", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6308, "upload_time": "2017-01-16T18:44:47", "url": "https://files.pythonhosted.org/packages/ba/f6/afb943e22ca35209dd776a6ef0e07ebb785b48ca87d1c9498a2a0c44d6e6/falcon_require_https-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8bb8e0d58fe97feeae601cc4727903b9", "sha256": "ef26e22d1a30753d9f6cb44fdab329152d6673a9e3ea8d54b27427877e986597" }, "downloads": -1, "filename": "falcon-require-https-0.1.0.tar.gz", "has_sig": true, "md5_digest": "8bb8e0d58fe97feeae601cc4727903b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3429, "upload_time": "2017-01-16T18:44:49", "url": "https://files.pythonhosted.org/packages/d4/45/4879b774ec585768966882351d7be5c441eae133a3262bed72aa7a6c00b1/falcon-require-https-0.1.0.tar.gz" } ], "0.1.0.dev0": [ { "comment_text": "", "digests": { "md5": "6d24384ceba78a2f8895043e92c588b5", "sha256": "ff65fd447ed5334d71a97d08004b4ec3896f8b9614e6a2ab3862fa161d163357" }, "downloads": -1, "filename": "falcon_require_https-0.1.0.dev0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "6d24384ceba78a2f8895043e92c588b5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6383, "upload_time": "2017-01-16T18:42:29", "url": "https://files.pythonhosted.org/packages/dc/25/fe87c174ade06f3e6918176d0d14e615673db84a9be4df519ebf92e27c2b/falcon_require_https-0.1.0.dev0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "173fd65622ed5ff78419a3c966639a60", "sha256": "fed87be865232a154735c9d1c88c5bb8cc1811626b74703d78ebb613b8416f64" }, "downloads": -1, "filename": "falcon-require-https-0.1.0.dev0.tar.gz", "has_sig": true, "md5_digest": "173fd65622ed5ff78419a3c966639a60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3440, "upload_time": "2017-01-16T18:42:31", "url": "https://files.pythonhosted.org/packages/32/25/04fc644b1403fe5876287e82ca624efc122e2c42465727f4033de96fe574/falcon-require-https-0.1.0.dev0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "43a09738d18e82db575b58ea48e34793", "sha256": "0057b8b5fa6606b3f0bc9eb2a3124da58408839cb9d3978255a6f89c6a2775a6" }, "downloads": -1, "filename": "falcon_require_https-0.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "43a09738d18e82db575b58ea48e34793", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6308, "upload_time": "2017-01-16T18:44:47", "url": "https://files.pythonhosted.org/packages/ba/f6/afb943e22ca35209dd776a6ef0e07ebb785b48ca87d1c9498a2a0c44d6e6/falcon_require_https-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8bb8e0d58fe97feeae601cc4727903b9", "sha256": "ef26e22d1a30753d9f6cb44fdab329152d6673a9e3ea8d54b27427877e986597" }, "downloads": -1, "filename": "falcon-require-https-0.1.0.tar.gz", "has_sig": true, "md5_digest": "8bb8e0d58fe97feeae601cc4727903b9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3429, "upload_time": "2017-01-16T18:44:49", "url": "https://files.pythonhosted.org/packages/d4/45/4879b774ec585768966882351d7be5c441eae133a3262bed72aa7a6c00b1/falcon-require-https-0.1.0.tar.gz" } ] }