I installed it and got it working. It seems the module only hides the nodes, but not control access to them.
For example, I could still access the nodes associated with other terms. I simply used ?q=node/# for all the nodes and everything is visible to all the users once they are authenticated.
This is very insecure. I used this module for project management. Any client can easily change the node number in the browser address bar and read the information of other clients' project details, issues....
I wonder whether Taxonomy Access works in the same way.
Comments
Comment #1
Jojo-1 commentedI tried what you described in your bug - the ?q=node/# and it does not allow me to access protected nodes.
If you created nodes before you installed TACLITE then you need to re-submit your nodes for TACLITE to work. Here is what I do and it works:
1. Created nodes.
2. Installed TAC_LITE.
3. Edited created nodes and clicked 'SUBMIT' on each one of them.
4. Voila the node is not accessible.
Check your access control settings - click on the TAC_LITE access by role tab and ensure that only the required roles have the access to the right tags. In my case I did not give any access to "Authenticated Users" instead gave rights to the new "Customer" role I created.
If you have tried everything I described above and yet managed to get access, then please let me know about your settings - this module is very important to me and hence I would like to know if there is something else that lets unauthorized users access the node.
Comment #2
kamalw commentedHmmm... It seems I have done all that. Tell me what will happen if you have something like this:
1. Customer role has the access to nodes (access control -> permissions)
2. Node A is attached to term TermA
3. Node B is attached to term TermB
4. TermA is attached to userA (User->tac_lite access)
5. TermB is attached to userB (User->tac_lite access)
6. "tac_lite access by role" set to "none" for all the roles
And I have selected the correct vocabulary that contains TermA and TermB "access control->tac_lite". Both users are in the same role Customer.
Ideally, userA should not be able to see NodeB. But the problem is he can! Access is denied for authenticated users (but not in the Customer role). nodeB is not shown in the pages for userA as well. But URL manipulation simply shows nodeB
This allows one customer to access the nodes of another customer.
I use Drupal 4.7.3, tac_lite 4.7.0.
Help please.
Comment #3
jeff h commentedI have set tac_lite to control access to my forums, so that an anonymous user cannot see several of my forums eg I have restricted forum/5.
It works at /forum ie the restricted forums are not shown to anon users, but if an anon user manually enters /forum/5 they are shown the forum post listing page for forum 5, although none of the posts show. Surely this is incorrect behaviour? An anon user shouldn't even know my forum 5 exists.
Comment #4
kamalw commentedSurely that's not acceptable. What I see is the same.
Enabling the access control does not show the protected stuff and urls to proected stuff in the generated pages if a user just clicks on the links he finds here and there. This is correct behaviour.
But url manipulation easily reveals the content. The conclusion is that there's no real access control here. I am sure lots of people will end up with great troubles. I assume that this module is heavily used by many. May god help them!
I found a similar problem with the Taxonomy Access module as well. I am just wondering whether this is a problem with the core of Drupal or specific to this module (and Taxonomy Access module)!
Guys, this is CRITICAL.
Comment #5
efolia commentedI think that you misundertand the purpose and the extent of tac_lite usage. It does what it says it does, and it does it quite well. It does as much as it can given the state of the Drupal core and it's quirks (such as the separation and overlap between the menu and the node systems, where the menu also controls access rights). Actually, tac_lite gives Drupal something no other CMS that I know has: an easy individual access control.
The reason people are experiencing this *limited access control* as a *bug* is probably because they did not organize their website correctly in the first place. tac_lite should be used as a fine-grain access management control module, not as a general control service. I doubt very much that this was ever the intention of its author.
The truth is there will never be a service that controls access in an absolute secure way based on the individual properties of a document (which is what taxonomy does: it ads a property to a document). With Drupal, you have to model your website so that it uses roles to control access to its different sections, be it forums or blogs, articles, or any other document structures that you put up for view. Use taxonomy-based access control to refine access within those sections only where roles become irrelevant or unmanageable (which should be the same anyways).
If role-based access could be bypassed by handling some URL parameter, this would be a very serious flaw. Even if it was possible to bypass taxonomy-based acces with such a hack, it should only have minor implications. Much like if Joe Bloe walking down the sidewalk has access to your room and personal belongings, then your home security system has serious flaws. But if your wife and kids can open the door to your room and browse through your underwear, it shouldnt be that big of a deal.
Ok, I'm kidding, but you get the idea... ;-)
efolia
Comment #6
gtaylor commentedThis is a significant problem.
I don't see how you can say that it's an implementation problem - how we design the system.
I want to simply hide forums from unauthenticated users. Nothing fancy and certainly a very common requirement. Yet if a person gets an URL to a forum or a forum post - per this thread, they're going to be able to see it whether they should or not. I'm failry certain this will not be acceptable for my client and we will not deploye forums - a shame.
The issue though as you say may go to a deeper Drupal level. I have a few posts on the subject:
http://drupal.org/node/89826
http://drupal.org/node/88420
If necessary, I think this should be addressed at a core drupal level issue in the next significant release. At least that's my opinion...
Comment #7
dan_aka_jack commentedI agree with the last poster. This is a critical issue. I, and I'm sure many other people, would like to be able to restrict access to certain nodes.
Comment #8
monyo commentedThis issue has caught my eye and I am interested to get some clarification. I just recently installed TAC_lite and I thought I was successful in implementing proper access rights based on terms and user rights. I've tried the above steps to duplicate the problem but was not able to raise the same result.
Am I missing something here?
Can you really access a tac_lite protected content just by simply typing it's URL? Can someone please clarify if this is correct?
Comment #9
harry slaughterI'm seeing similar behavior but with an additional corollary.
Let's say we have 3 roles, A, B, C.
I create a taclite rule that says all users can see all terms in a given category, *except* term 'foo', which is only viewable by role A.
It works fine if every user has only one role. But users with both roles B and C can now directly access the supposedly protected content by going to the URL directly, though they still will not see the node in listings.
Not sure if this is reproducible for others, would be nice if folks could try this scenario and verify.
Comment #10
Dave Cohen commentedI apologize for being silent on this issue for so long. I only now learned of it's existence.
I suspect the problem is not caused by tac_lite, but by some other permissions causing a hook_access to grant access to the node. You see, modules like tac_lite cannot DENY access to nodes, they can only GRANT it. I suspect tac_lite is not granting the user rights to view the node, but something else is.
I would appreciate it if someone reproducing this problem could install devel_node_access (comes with devel module), enable the devel_node_access block and tell me what it says when viewing the node in question. For more info see this video: http://www.dave-cohen.com/node/1170
Comment #11
derrald commentedI am using tac_lite with 4.7.4.
It is working as expected with no security isssues (kudos).
An observation here.
With the exception of the reference to forums, I don't see what modules people are testing this on or what version of drupal is being used.
I wrote my own my module and at first was exhibiting the same issue. I made one change to the hook_menu in my module. See below.
New line:
'access' => node_access('view', $node),
Old line:
'access' => user_access('dump spreadsheet'),
Full snippet for clarity.
$items[] = array('path' => 'my/dump/' . $node->nid,
'title' => t('my dump'),
'callback' => 'my_dump',
'callback arguments' => array('node' => $node),
// 'access' => user_access('dump spreadsheet'),
'access' => node_access('view', $node),
'type' => MENU_CALLBACK);
I don't if this could factor into it or not. But it might be helpful to know this.
Comment #12
nancydruI just enabled devel node access and went to a BOOK page that is supposed to be limited to one specific role.
The access showed "node realm gid view update delete | Board of Directors Only | all 0 1 0 0"
I then updated and save the page.
The access showed exactly the same - UNPROTECTED.
My site is now on hold again!
And, as far as having to go and update every single node in my site, this is not acceptable - I have over 1,000 images alone. And TAC_lite was installed BEFORE they were loaded.
Comment #13
nancydruI assure many of my pages were created AFTER installing TAC_Lite, but this is what Devel says:
node_access summary
All Nodes Represented
All nodes are represented in the node_access table.
Access Granted to Some Nodes
The following realms appear to grant all users access to some specific nodes. This may be perfectly normal, if some of your content is available to the public.
Public Nodes realm public nodes
all 898
Comment #14
Dave Cohen commentedTo nancyw, which version of drupal are you using? Have you configured tac_lite to let it know which vocabularies affect privacy? Have you assigned one of those terms to your node?
When configured properly, you should see a row with realm value 'tac_lite' in the devel_node_access block.
Comment #15
nancydruI am using 5.1. I did find that somehow the taxonomy associations got broken. After I fixed that everything is working correctly. Whew!!!
Comment #16
Dave Cohen commentedIf this is really an issue, someone change it's status back to active. And please tell me how to reproduce, because I've never seen it.
Comment #17
mrintegrity commentedjeeze, this gave me a bit of a fright when i saw the thread :) testing it shows no such issues however!
Access denied
You are not authorized to access this page.
Perhaps we can change the title to "(SOLVED) In fact, it doesn't control access?" in order to avoid having people read all the threads which is a bit of a waste of time :)
PS: LOVE the TAC_LITE!!! works GREAT :) please please please keep up the good work!
Comment #18
Dave Cohen commentedOr, we just close it. Bye-bye issue.