安全性测试修复意见总结

安全性检查工具

1 CAT.NET

2 AppScan

一 SQL注入攻击(SQL Injection)

问题1:用字符串连接组合SQL命令的方式;

修复方法:

使用参数化查询或者使用存储过程;但是如果使用了存储过程,也要避免在存储过程中使用字符串连接组合SQL命令的方式,l动态拼接sql语句,使用exce方式执行;修改通用分页存储过程;

问题2:数据库访问权限过大;

修复方法:

去除sa权限,每一个数据库设置一个数据库专用用户;

不开发权力过大的功能,如xp_cmdshell;

不要使用集成登录方式;

Web.config数据库连接字符串,使用加密方式存储;

问题3:未限制输入的字符数

解决办法:除了在客户端限制输入字符数,重要的地方还要在服务器端限制字符数;

问题4:未对用户输入的数据做潜在的指令检测

解决办法:

提供统一的帮助类库,在获取输入数据时,过滤危险字符串;

能使用值类型的不要使用String类型;

问题5:如果系统已经运行,修复工作量很大,如果防止sql注入;

解决办法:

使用微软免费提供的IIS组件UrlScan 3.1防止sql注入

二 跨站脚本(XSS)攻击

问题1:过度信任客户端数据

解决办法:

提供统一的帮助类库,在获取输入数据时,过滤危险字符串;

能使用值类型的不要使用String类型;

如果没有特殊要求,请不要禁止 Validaterequest

问题2:服务器端安全设置不足;

解决办法:

每个站点,应用程序池,设置单独用户,不是使用默认的IIS用户;

如果仅仅是静态页面,设置为只读属性;文件夹

问题3:Cookies未做足够的安全处理;

解决办法:

加密;绑定MAC地址,IP地址;

问题4:ViewState没有加密;

解决办法:

在web.config设置所有网站为ViewState加密即可;

问题5:对输出进行编码以过滤特殊字符;

解决办法:

HttpUtility.HtmlEncode(使用黑名单方式)

AntiXss.HtmlEncode(使用白名单方式,更安全推荐使用)

问题6:解密登录的请求,诸如用户名、密码和信用卡号之类的敏感输入字段未经加密即进行了传递

解决办法:

通过加密连接(如 SSL)将其发送到服务器

RSA客户端js加密服务器,思路:1.服务器每次随机生成公私钥2.只把公钥发给客户端3.客户端用js和公钥加密4.密文到服务器用私钥解密

三 垃圾信息群发(SPAM)

问题1:垃圾邮件

解决办法:

使用垃圾邮件过滤功能的邮件服务器和客户端

问题2:发布包含有隐藏文本,重复关键字,恶意链接;发布不合法的内容;

解决办法:

使用不易被OCR系统识别的验证码功能;

通过HttpModule等手段,网站全局禁止提交不合法内容;

通过技术实现禁止用户短时间内重复提交数据的功能;

适当的人工审核机制;

问题3:OCR程序自动识别验证码图片,自动提交垃圾数据信息;

四 网页木马(SPY)

问题1:上次安全漏洞的非法*.asp.*.php.*aspx等文件;

这些非法网页程序所在的文件目录,有执行权限;这些文件有读取,修改,删除等权限;可以执行特殊的系统命令;

解决办法:

设置可上传的文件类型,并且正确获取文件扩展名(FileSystemInfo.Extension);

有安全风险的网站将其设置在独立的应用程序池中;

应用程序池不要使用默认的NETWORK SERVICE用户;

新建用户portal,隶属于IIS_WPG,设置应用程序池中的“标识”,在配置寻找新创建的portal;上传的文件夹类型,选择用户portal,不能设置为完全控制;

站点的执行权限,选择“纯脚本”,不要选择写入;

上传文件的存储目录在IIS中不允许执行脚本;

不需要动态修改的文件或目录,最好设置为只读;

文件系统使用NTFS格式,并设置好足够的最小权限;

IIS7.5,建议将应用程序池设置为ApplicationPoolIdentity

问题2:服务器上安装有漏洞的软件/服务程序;

解决办法:

安装杀毒软件;

卸载有漏洞软件;

操作系统打补丁;


你可能感兴趣的:(.NET)