构建这些类型的 Web 使用法式最经常使用的设计办法是将平安战略整合到 Web 使用法式的营业逻辑中,即由使用法式决意某个用户是不是有权会见数据库中的某个数据。在这类情况下,数据库的脚色仅为存储数据和依恳求供应数据。换句话说,假如 Web 使用法式号令数据库供应特定信息,则数据库会直接履行该号令而不反省用户的权限。
从 Web 使用法式掌握数据会见会怎样?大多半情形下没有成绩;这是个不错的处理计划,特别是在触及的数据为非义务关头或绝密的时分。很多书和在线资本中都用到了该办法。实践上,有本很受接待的 PHP/MySQL 书明白否决每一个使用法式创立一个以上的数据库用户帐户,这是由于“额定的用户或庞杂的权限会因某个操作在持续前要反省更多的信息而下降 MySQL 的履行速度”。的确如斯;然而,在保持将平安性整合到数据库逻辑中的设法前能够要思索几件工作。咱们来看以下示例。
假定创立一个内容办理体系 (CMS)。个中利用数据库来存储网站上宣布的内容。大局部数据是公然的,答应匿名 Web 用户读取;但只答应编纂更改数据。利用单一数据库帐户会见和修正数据库中的纪录,并经由过程用口令回护仅办理员可以会见的页面的会见权限用 PHP 代码掌握平安性。
ORA-00942:table or view does not exist
为了会见数据或仅是看到表,需求授与 CMS_USER 和 CMS_EDITOR 帐户对 WEB_CONTENT 表的只读权限:
GRANT SELECT on hr.web_content to cms_user;
GRANT SELECT on hr.web_content to cms_editor;
INSERT INTO hr.web_content (page_id,page_content) VALUES (1,'hello world');
将发生毛病动静
ORA-01031:insufficient privileges
要答应 CMS_EDITOR 更改该表的内容,需求授与以下权限:
GRANT INSERT,UPDATE,DELETE on hr.web_content to cms_editor;