We fixed a few more bugs (strangely most of them preexisting 1.96.1).
We also addressed two security issues as I will explain later in this
email:

here is am reporting the 1.96.1 changelog with some additions

Changelog:
- "from gluon import *" imports in every python module a web2py
environment (A, DIV,..SQLFORM, DAL, Field,...) including
current.request, current.response, current.session, current.T,
current.cache, thanks Jonathan.
- conditional models in
  models/<controller>/a.py and models/<controller>/<function>/a.py
- from mymodule import *, looks for mymodule in applications/thisapp/
modules first and then in sys.path. No more need for local_import.
Thanks Pierre.
- usage of generic.* views is - by default - restricted to localhost
for security. This can be changed in a granular way with:
response.generic_patterns=['*']. This is a slight change of behavior
for new app but a major security fix.
- all applications have cas 2.0 provider at http://.../user/cas/login
- all applications can delegate to login to external provider
Auth(...,cas_provider='http://.../other_app/default/user/cas')
- A(...,callback=URL(...),larget='id') does Ajax
- URL(...,user_signature=True), LOAD(...,user_signature=True) can
sign
urls and @auth.requires_signature() will check the signature for any
decorated action.
- DAL(...,migrate_enabled=False) to disable all migrations
- DAL(...,fake_migrate_all=True) to rebuild all corrupted metadata
- new DAL metadata format (databases/*.table)
- DAL(...,adapter_arg={}) allows support for alternate drivers
- DAL now allows circular table defintions
- DAL(..,auto_import=True) automatically imports tables from metadata
without need to db.define_table(...)s.
- new alterante syntax for inner joins: db(...).select(join=...)
- experimental cubrid database support
- DAL 'request_tenant' fields are special, the altomatically filer
all
records based on their default value.
- db._common_fields.append(Field('owner')) allows to add fields to
ALL
tables
- DAL ignores repeated fields with same names
- web2py_ajax.html is more modular, thanks Anthony
- request.is_local
- request.is_http
- new sessions2trash.py thanks Jim Karsten
- corrupted cache files are automatically deleted
- new simpler API gluon.contrib.AuthorizeNet.procss(...)
- fixed recaptcha (as they released new API)
- messages in validators have default internationalization
- No more Auth(globals(),db), just Auth(db). Same for Crud and
Service.
- scripts/access.wsgi allows apache+mod_wsgi to delegate
authentication of any URL to any web2py app
- json now supports T(...)
- scripts/setup-web2py-nginx-uwsgi-ubuntu.sh
- web2py HTTP responses now set: "X-Powered-By: web2py", thanks Bruno
- mostly fixed generic.pdf. You can view any page in PDF if you have
pdflatex installed or if your html follows the pyfpdf convention.
- auth.settings.extra_fields['auth_user'].append(Field('country'))
allows to extend auth_* tables without need of definiting a custom
auth_* table. Must be placed before auth.define_tables()
- {{=response.toolbar()}} to help you debug applications
- web based shell now supports object modifications (but no
redefinitions of non-serializable types)
- jQuery 1.6.1
- more secure uuid function to protect sessions form cryptographic
attacks
- auto logout of appadmin
- Lots of bug fixes

## Security wanring

This release fixes two security issues:

1) web2py used random to generate uuid. This is mostly fine but it was
technically possible for an attacker to retrieve a lot of session
uuids, extrapolate information about the pseudo-random-generator and
use the information to guess somebody else's session. Our new
contributor and security expert David Wager, spotted this problem and
suggested rewriting the web2py uuid function used for generating
session names. The new function uses /dev/urandom as entropy source
and falls back to the old method when the entropy source is not
available, issuing a warning.

2) appadmin uses admin authentication but failed to detect expires
sessions (60minutes). This has now been corrected.

Reply via email to