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代码转成
解决办法进入IIS - 选中imedical目录 - 功能视图中找到【HTTP响应标头】,添加相应响应标头
添加X-XSS-Protection:1;mode=block
如果启用XXS保护可能影响系统
添加X-Content-Type-Options:nosniff
添加X-Frame-Options:SAMEORIGIN
表示当前系统只能引用同源界面
X-Frame-Options:ALLOW-FROM uri 时可以指定来源的frame
添加Content-Security-Policy:script-src ‘self’ ‘unsafe-eval’ ‘unsafe-inline’ clef.io jquery.min.js;
if (%request.GetCgiEnv("HTTP_REFERER")["ibm.com"){ Q 0 }
if (%request.GetCgiEnv("HTTP_REFERER")["hcl.com"){ Q 0 }
demo – 翻译菜单 – 字典翻译,在界面中找到用户不存在
,翻译成用户或密码错误
, 点击保存,应用到组件,在弹出小窗口,勾中所有点击应用。
demo - 侧菜单 - 系统配置 – 标题及消息翻译 ,在界面中找到Your Login is Flagged Inactive. Please see your System Administrator
,翻译成正确值
demo 侧菜单 - 系统配置 - 标题&消息翻译( 翻译 – 字典翻译页签)
把: Your Login is Flagged Inactive. Please see your System Administrator 与 Please enter a valid Username and Password 与 You have had
都翻译成:用户名或密码错误
在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>