SQL注入检查ZCMS提供了全面的应用层安全机制(组图)
优采云 发布时间: 2021-05-09 00:28SQL注入检查ZCMS提供了全面的应用层安全机制(组图)
1次SQL注入检查
Z cms提供了全面的应用程序层安全性机制,并系统地处理了主要威胁网站的安全性问题。 Z cms是基于ZCF的基础框架构建的。 ZCF中的大多数数据库操作都基于ORM,因此无法进行SQL注入。少数非ORM SQL语句全部基于QueryBuilder机制。 QueryBuilder要求所有SQL条件都基于参数,并且不允许直接将字符串拼接到SQL语句中,例如:
QueryBuilder qb =新的QueryBuilder(“从ZCLog中选择*,其中Type =?和ID =?”,ArticleContentType.TypeID,articleID);
如果(StringUtil.isNotEmpty(userName)){
qb.append(“和AddUser,如?”,“%” + userName +“%”);
}
如果(StringUtil.isNotEmpty(startDate)){
qb.append(“和AddTime> =?”,startDate);
}
如果(StringUtil.isNotEmpty(endDate)){
qb.append(“和AddTimeaddDay(DateUtil.parse(endDate),1));
}
qb.append(“通过addtime desc排序”);
DataTable dt = qb.executeDataTable();
QueryBuilder是参数化Statement的封装。它将传入参数作为字符串传输到Statement,以防止传入参数入侵SQL逻辑并被执行,从而达到防止SQL注入的目的。
2跨站点脚本检查
XSS(跨站点脚本)攻击者向服务器提交恶意HTML代码。如果服务器未检查就输出到HTML页面,则其他用户在浏览页面时会将html嵌入到Web中。将执行代码以实现攻击者的特殊目的。 XSS是常见的网站安全问题。
Z cms采用严格的参数检查机制来仔细防范XSS。对于传递到服务器的任何HTTP请求(无论是get请求还是post请求),请求中的参数默认情况下仅允许使用非危险字符(例如字母,数字和下划线),以及特殊字符(例如单引号和双引号)不允许使用引号。如果参数Character中有特殊参数,则Z cms将自动截获该请求并重定向到错误页面。如果页面确实需要接受收录特殊字符的参数,则相应的后台方法需要使用@Verify批注进行特殊声明,并检查该方法中参数是否合法或HTML转义存储。
3防止非法上传文件
Z cms使用基于Flash的上传控件,在上传文件之前检查文件扩展名,并且仅允许将具有指定扩展名列表中的扩展名的文件上传到服务器。同时,在将文件扩展名保存到磁盘之前,会在服务器后台再次检查文件扩展名,并且只有具有允许扩展名的文件才会被写入磁盘。
所有在Z cms中上传的文件也将在保存前检查文件路径。仅允许将它们保存在指定目录中。该目录通常由WEB服务器解析。仅支持静态.html和.shtml文件。支持动态页面执行,例如PHP / JSP。
此外,Z cms设计为在低级操作系统权限下运行。 Z cms只需要对应用程序目录和已发布文件的所有目录(通常为wwwroot)具有读取和写入权限即可正常运行。建议Z cms在非root用户下运行。
通过上述措施,Z cms防止程序非法上传到服务器,并防止服务器安装WebShell或挂断。
4防止未经授权的访问
Z cms除了防止未登录用户通过SQL注入,XSS,非法上传文件等损害系统外,还对合法登录用户的行为进行严格的权限检查,以防止低特权用户用户以非法方式凌驾其权限。权限操作。
Z cms向所有页面添加了权限声明,例如:
“ Platform.Branch” />
此语句限制只有拥有Platorm.Branch权限项目(即组织管理权限项目)的登录用户才能访问当前页面。如果他们未登录或没有Platform.Branch权限项,则权限不足的页面将被直接重定向。随后的页面逻辑将不被执行。
Z cms不仅支持页面级权限检查,而且还支持对页面上的按钮,控件和显示区域的细粒度权限检查。它可以方便,灵活地将不同的权限项分配给不同的按钮。仅当当前用户的许可项满足按钮要求的许可项时,该按钮才对用户可见或可用。
Z cms还对所有后台方法执行了权限检查。调用后台方法时,ZCF框架将检查该方法的@Priv批注。如果当前用户不符合@Priv批注中要求的权限,则将不会执行方法中的程序逻辑,并且将提示用户输入权限不足。