<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-5950537015062599287.post7735539191162975114..comments</id><updated>2012-01-28T18:51:14.342+11:00</updated><category term='SwingX'/><category term='Seam Forge'/><category term='PrimeFaces'/><category term='GWT'/><category term='Wi-Fi'/><category term='MySQL'/><category term='JEXL'/><category term='Javassist'/><category term='JIDE'/><category term='jsf2next'/><category term='Seam'/><category term='JBoss Cache'/><category term='security'/><category term='Hibernate'/><category term='JBPM'/><category term='Mojarra'/><category term='Oracle'/><category term='Java'/><category term='RichFaces'/><category term='HttpClient'/><category term='JavaOne'/><category term='Groovy'/><category term='Beans Binding'/><category term='Swing'/><category term='GitHub'/><category term='XSL-FO'/><category term='Drools'/><category term='Useful Bounds of Generation'/><category term='ICEfaces'/><category term='Asus'/><category term='Metawidget'/><category term='Metwidget'/><category term='Metawidget (Technical Stuff)'/><category term='Maven'/><category term='Wicket'/><category term='testability'/><category term='Swing AppFramework'/><category term='Eclipse'/><category term='PhD'/><category term='HTML'/><category term='MyFaces'/><category term='JSF'/><category term='iPad'/><category term='HornetQ'/><category term='Facelets'/><category term='Duplication'/><category term='Android'/><category term='SWT'/><title type='text'>Comments on Kennard Consulting's Blog: What Do You Want In A Generic DAO API?</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.kennardconsulting.com/feeds/7735539191162975114/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950537015062599287/7735539191162975114/comments/default'/><link rel='alternate' type='text/html' href='http://blog.kennardconsulting.com/2012/01/what-do-you-want-in-generic-dao-api.html'/><author><name>Richard</name><uri>http://www.blogger.com/profile/11191015489042575122</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/__YNTBm_fS_I/R8U28ZqxB9I/AAAAAAAAADM/mBDbekiHnVI/S220/Richard+Kennard+(square).png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5950537015062599287.post-3836914758528908545</id><published>2012-01-28T18:51:14.342+11:00</published><updated>2012-01-28T18:51:14.342+11:00</updated><title type='text'>Anton,

Thanks for your comments.

First let me em...</title><content type='html'>Anton,&lt;br /&gt;&lt;br /&gt;Thanks for your comments.&lt;br /&gt;&lt;br /&gt;First let me emphasise: the above is just what has worked for us, in my opinion. So I&amp;#39;m not saying &amp;quot;db sequences with increasing ids are not good&amp;quot; as a general rule.&lt;br /&gt;&lt;br /&gt;However let&amp;#39;s say you need &amp;#39;fine-grained&amp;#39; security. Not just Role Customer can access &amp;#39;/order&amp;#39; and cannot access &amp;#39;/admin&amp;#39;. But more subtle rules like &amp;#39;Customer ABC can see their order number 123, and so can Account Manager XYZ, but Customer DEF mustn&amp;#39;t&amp;#39;. It&amp;#39;s very easy to get such rules wrong: to miss some permutation and accidentally allow the wrong role to access the wrong data.&lt;br /&gt;&lt;br /&gt;The main way they will &amp;#39;access the wrong data&amp;#39; is by using the ID of the wrong data. Customer DEF might, for example, try to hit a URL &amp;#39;/order?id=123&amp;#39;. So a great first line of defense is to protect those IDs. We do this in two ways.&lt;br /&gt;&lt;br /&gt;First, we make them unguessable because they are not just incrementing. Second, we encrypt them to the logged-in user&amp;#39;s password. That way, even if someone is &amp;#39;looking over your shoulder&amp;#39;, the IDs they see on the URL will not work for them.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950537015062599287/7735539191162975114/comments/default/3836914758528908545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950537015062599287/7735539191162975114/comments/default/3836914758528908545'/><link rel='alternate' type='text/html' href='http://blog.kennardconsulting.com/2012/01/what-do-you-want-in-generic-dao-api.html?showComment=1327737074342#c3836914758528908545' title=''/><author><name>Richard</name><uri>http://www.blogger.com/profile/11191015489042575122</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp1.blogger.com/__YNTBm_fS_I/R8U28ZqxB9I/AAAAAAAAADM/mBDbekiHnVI/S220/Richard+Kennard+(square).png'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.kennardconsulting.com/2012/01/what-do-you-want-in-generic-dao-api.html' ref='tag:blogger.com,1999:blog-5950537015062599287.post-7735539191162975114' source='http://www.blogger.com/feeds/5950537015062599287/posts/default/7735539191162975114' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-72537151'/></entry><entry><id>tag:blogger.com,1999:blog-5950537015062599287.post-6510759531389808588</id><published>2012-01-28T02:20:43.572+11:00</published><updated>2012-01-28T02:20:43.572+11:00</updated><title type='text'>Perfect post! Empty JSF/CDI bean classes are frust...</title><content type='html'>Perfect post! Empty JSF/CDI bean classes are frustrating and boilerplate so the generic EL resolver is a really good idea, also search object is great! Could not understand the UUID idea - why the db sequences with increasing ids is not good? If the user does not have the access to the entity 124 but has for 123 - system must check this and redirect to error page or show illegal access message. Also could not understand the need to generate names of fields - this may make the developing and debuging process much more difficult though security reasons are not clear..&lt;br /&gt;Thanks.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5950537015062599287/7735539191162975114/comments/default/6510759531389808588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5950537015062599287/7735539191162975114/comments/default/6510759531389808588'/><link rel='alternate' type='text/html' href='http://blog.kennardconsulting.com/2012/01/what-do-you-want-in-generic-dao-api.html?showComment=1327677643572#c6510759531389808588' title=''/><author><name>Anton</name><uri>http://www.blogger.com/profile/10896648740096795357</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.kennardconsulting.com/2012/01/what-do-you-want-in-generic-dao-api.html' ref='tag:blogger.com,1999:blog-5950537015062599287.post-7735539191162975114' source='http://www.blogger.com/feeds/5950537015062599287/posts/default/7735539191162975114' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2057229383'/></entry></feed>
