bsp

信息安全等级保护测评处理

1. 防注入

 if ##class(websys.Conversions).IsValidClassName("websys.Filter") d ##class(websys.Filter).InjectionFilter()
如:
<csp:method name=OnPreHTTP arguments="" returntype=%Boolean>
	 if ##class(websys.Conversions).IsValidClassName("websys.Filter") d ##class(websys.Filter).InjectionFilter()
     if ##Class(websys.SessionEvents).SessionExpired() q 1  // 登录后才能查看,否则弹出登录界面
     q 1
    ...
</csp:method>

测试办法,在某个界面输入框中写入:'><sVg/OnLoAd=prompt(1)> 看是否弹出界面

function htmlEncode (str) {
	var ele = document.createElement('span');
	ele.appendChild( document.createTextNode( str ) );
	return ele.innerHTML;
}
// 在发送值到后台前使用
desc = htmlEncode(desc); //会把html代码转成

2. 目录浏览禁用

3. 缺少响应头

解决办法进入IIS - 选中imedical目录 - 功能视图中找到【HTTP响应标头】,添加相应响应标头

if (%request.GetCgiEnv("HTTP_REFERER")["ibm.com"){ Q 0 }
if (%request.GetCgiEnv("HTTP_REFERER")["hcl.com"){ Q 0 }

5. 登录提示

  1. demo – 翻译菜单 – 字典翻译,在界面中找到用户不存在,翻译成用户或密码错误, 点击保存,应用到组件,在弹出小窗口,勾中所有点击应用。

  2. demo - 侧菜单 - 系统配置 – 标题及消息翻译 ,在界面中找到Your Login is Flagged Inactive. Please see your System Administrator,翻译成正确值

  3. demo 侧菜单 - 系统配置 - 标题&消息翻译( 翻译 – 字典翻译页签)

    把: Your Login is Flagged Inactive. Please see your System Administrator 与 Please enter a valid Username and Password 与 You have had

    都翻译成:用户名或密码错误

6. 越权访问

在csp的代码第一行增加以下代码

<csp:method name=OnPreHTTP arguments="" returntype=%Boolean>
 i '##class(websys.DHCCspGrant).IsAccessByMenu() q 1    // 防止界面越权
 i ##Class(websys.SessionEvents).SessionExpired() q 1   // 判断是否登录
 quit 1
</csp:method>