« WebChart中的安全机制 »
Tools » http://www.anysql.net/tools/webchart_security.html 2009-02-12到止前为止, 用WebChart显示的信息都是很关键的, 都只能限于一定范围内可以查看, 这就要求WebChart必须具有一定的安全机制, 来控制访问. 在WCML文件中, 有四个属性可以用于控制访问的权限.
WEBCHART.SECURITY={TRUE|FALSE}
WEBCHART.DEFAULTACCESS={ALLOW|DENY}
WEBCHART.DENY=role|role|...
WEBCHART.ALLOW=role|role|...
用上面四个值再加上是否登录来综合控制访问权限, 具有角色权限控制及拒绝(Deny)优先的概念, 过程可以用下图表示.
如何登录呢? 其实就是要创建一个Web的会话, 并在会话级设置以下属性值, 这些属性不能以页面参数的方式传入.
SESSION.LOGINID=user id
SESSION.LOGINNAME=user name
SESSION.LOGINROLE=role list
你完全可以创建自定义的用户登录系统, 与现有的系统统一登录帐号. 也可以用默认的登录功能, 首先需要在ADMINDB中创建一张用户表, 并录入初始用户数据.
CREATE TABLE WEB_USERS
(
LOGIN_ID VARCHAR(20) NOT NULL PRIMARY KEY,
LOGIN_NAME VARCHAR(50) NOT NULL,
LOGIN_PASSWD VARCHAR(20) NOT NULL,
LOGIN_ROLE VARCHAR(100)
)
然后将LOGIN_ID, LOGIN_PASSWORD, LOGIN_PAGE(登录成功后的页面URL), ERROR_PAGE(登录失败后的URL)传给login.sa就可以. 如果要退出登录, 则只需要传LOGIN_PAGE(退出后重定向的URL)到logout.sa就可以了.
<form action="login.sa" method="post">
<input type="hidden" name="LOGIN_PAGE" value="...">
<input type="hidden" name="ERROR_PAGE" value="...">
<table border="0">
<tr>
<td> Username: </td>
<td><input type="text" name="LOGIN_ID" size="20">
</td>
</tr>
<tr>
<td>Password: </td>
<td><input type="password" name="LOGIN_PASSWORD" size="20">
<input type="submit" Value="Login">
</td>
</tr>
</table>
</form>
上述安全功能用于内网控制已经能胜任了. 从防止SQL注入的攻击来讲, 所有的SQL都只能定义在WCML文件中, 不允许以页面参数的方式来传入.


Recent Comments