web 安全摘要-note

xss 跨站脚本攻击

对输入的输出的变量中的危险词转义处理或者过滤

2 架构底层对来源的请求进行安全检查,是否包含敏感字符

sql 注入

参数化查询 :定义好所有sql代码 再讲每个参数诸葛传入 能够让数据库辨明代码和数据

2 存储过程是预先定义并存放在数据库中,从而被应用程序调用

3 将所有的用户输入都进行转移,辨明数据和代码

表单重复提交

在表单生成唯一的token 在表单提交的时候服务端验证token的值

这个也可以用使用js跳转的方法

get 请求提交数据 将会带来更多xss 和sql injection 注入

表单漏洞篡改

如果数据从客户端进行提交,恶意用户可使用本地提交、代理或中间人攻击的方式篡改表单中的关键数据

关键数据必须存放在服务端,在服务端接受表单提交的时候,验证提交上来的数据是否和表单提交前一致。

图片上传漏洞

限制上传文件大小,对文件存储位置进行严格限制,存储目录只有读写权限

对文件内容进行过滤,防止包含恶意代码

限制上传类型

设置单独的上传服务器

对于图片展示点不多的情况:单独设置图片上传点(前台或后台),直接在页面进行展示(前台或后台)。

2) 对于有很多图片展示点的情况:设置单独的图片上传点,上传至统一的图片服务器,返回图片链接。然后

为各展示点配置各自的图片链接上传点,对上传的链接进行域名限制,只允许上传图片服务器域下的链接。

7> 文件下载漏洞

危害:将导致路径遍历攻击,下载服务器上的任意文件并造成系统重要信息泄露。

1 限制文件download 函数读取的文件,或者读取文件名非用户可控。

2 要下载的文件地址保存至数据库中.

3 文件路径保存致数据中,让用户提交文件对应ID下载文件

4 下载之前做权限判断,

5 可供下载的文件集中放到静态服务器上,并保证web 无法直接访问,对下载路径进行检查

6 记录文件下载日志

7 不允许提供目录遍历服务

认证与授权

暴力破解,恶意注册漏洞

1 在多次错误登录后使用足够强度的验证码进行人机识别

2 在注册时 使用足够强度的验证码进行人机识别

3 在对单 IP 注册数量作限制

URL 未授权访问漏洞

Web 应用程序接收到用户提交的URL 参数后,如果没有对参数做“可信任URL”的验证就向用户浏览

器返回跳转到该URL 的指令,会容易导致信息泄露、挂马或者钓鱼等攻击。

1 增加权限验证(验证登录中的cookie),所有接口必须登录后才可以调用

2 之前使用session 等方式验证url 需要把 验证字段使用cookie传送 不能在get请求中传送

3 所有的excel 文件不许直接可以下载,需要使用php 读取下载 ,然后在这个读取页面里加上权限验证

4 callback 类型的url 请在与其他地方进行oauth 交互的时候,将其他地方返回的token 和nick写入用户的浏览器中cookie中,然后在url中验证cookie登录情况

目录遍历

Apache 禁止列目录

方法一,修改httpd.conf 配置文件,查找Options Indexes FollowSymLinks,修改为Options-Indexes;

方法二,在www 目录下的修改.htaccess 配置文件,加入Options -Indexes。(推荐)

在Tomcat 的conf/web.xml 文件里把listings 值改为false。修改完httpd.conf 后,必须重启web 服务;

3、IIS 中关闭目录浏览功能:在IIS 的网站属性中,勾去“目录浏览”选项,重启IIS。

口令强度漏洞

1 强制用户使用复杂的口令,如最少8 位、必须包含字母和数字

cookie 设置

设置cookie时 加入属性httponly 该属性保证javascript 脚本无法获取cookie的值

session 有效性

Cookie 如果失窃,其中保存的会话session 可以一直生效,导致用户身份可以一直被盗用

1 设置cookie 中身份认证字段(sessionId) 为浏览器当前回话

2 并保证最长时间不超过1天

3 session 和来源IP绑定

4 用户推出 系统需要清空回话session的所有内容

敏感数据 安全  使用 密文或者散列方式存储 并表尾敏感字段

敏感数据的重要字段应该以较为复杂的加密方式进行传输。

接口访问安全漏洞

限制接口访问的权限,对请求的ip限制,如使用接口白名单

敏感参数 传递需要放在POST内容中 且需要有时间戳

后台系统安全日志

1) 确定后台登录日志条目中包括用户身份认证。

2) 确定后台操作日志条目中包括事件类型。

3) 确定后台操作日志条目中包括成功指示或失败指示。

4) 确定后台操作日志条目中包括事件起源(源IP)。

5) 确定后台操作日志条目中包括受损数据、系统组件或资源的特征或名称。

6) 相关后台日志记录内容文档化

前台系统安全日志

1) 确定前台登录日志条目中包括用户身份认证、事件类型和事件起源。

2) 如果敏感信息确实需要展现,请将访问敏感数据操作记录操作日志。

目录权限安全限制 最小权限原则

1:WEB 目录中,只允许日志文件夹、缓存文件夹有可写权限。

2:上传文件的目录不得有执行权限。

3:只允许定时器对应文件有可执行权限。

数据库账号 安全

禁止使用MSSQL 数据库的sa、MYSQL 数据库的root 等超级管理员帐号作为配置文件中的账号

操作系统安全

1)安装防火墙程序,云上的必须安装云盾,云下的可以安装其他杀毒软件。

2)以最小的权限安装所有的访问规则。

操作系统和应用程序及时安装安全漏洞补丁。

FTP 弱口令

配置FTP Server 为禁止匿名登录。以vsftp2.2.0 为例,需按照如下说明修改配置文件:

将anonymous_enable 值改为为NO(如果没有这一行,加上anonymous_enable=NO 即可)。

(2)添加local_enable=YES(开启本地用户访问)。

(3)所有密码不能相同,不能为空,密码至少8 位以上,包含字母大小写+数字+特殊字符,不要使用连续字母

或单纯数字,不要使用键盘上连续字符。最好不要使用与自身关联强(如生日)单词等。

php 函数禁止 phpinfo等

web 备份文件下载 >将web 备份系统放到web 目录之外

structs 开始了debug模式 》struts.xml 设置

端口安全

1)建议只开放WEB 端口(如80),云服务器可以开放22 和3389 端口,其他端口不建议对外开放。禁止

3306、1433 等数据库端口对外开放。

2)尽量不要让后台管理页面对外网开放(云环境除外)。

3)后台管理页面不能输入IP(或者IP+端口)就可以打开,建议加一层目录(如http://ip:port/目录/)。

后台webShell 入侵漏洞

重置系统:需重置机器系统盘和数据盘(止损,该主机被黑客控制,重置机器前请先备份好用户数据);

操作系统密码更新,必须使用强密码(字母大小写+数字或特殊字符,14 位以上);

重新部署代码,不允许直接拷贝原应用的老代码和缓存数据(代码部署前,手动开启aegis 进行一次全盘

扫描,扫描方法见下文);

服务器中站点用户账号密码必须修改(字母大小写+数字和特殊字符,8 位以上,不要使用连续的数字或字

母);

5、如果有使用rds,服务器中的rds 连接密码必须修改;

6、加强服务器密码管理:限制可获取服务器密码人员(例如,只有少数几个运维人员才可接触到密码),严

禁服务器密码对外泄露。

7、Aegis 手动扫描步骤:

windows:

点击左下角"开始按钮",然后依次进入"所有程序"->"附件",右键点击"运行方式",选择"administrator"并输入

管理员密码,此时会出现一个名字成为"命令提示符"的黑色框框。

在此界面依次输入以下两条命令:

64 位机器请输入:

"C:\Program Files (x86)\Alibaba\Aegis\alihids\AliHids.exe" -scan -dir "您的web 站点路径(绝对路径,

并加上双引号,不要以\结尾)"

32 位机器请输入:

"C:\Program Files\Alibaba\Aegis\alihids\AliHids.exe" -scan -dir "您的web 站点路径(绝对路径,并加上

双引号, 不要以\结尾)"

扫描需要一定的时间,请耐心等待。等待扫描结束后会在C:\Program Files (x86)\Alibaba\Aegis\

globalcfg\reports 生成一个名称为"scanfiles.txt"的文件

Linux:

1. linux、CentOS、OpenSUSE 系统:

a)下载http://update.aegis.aliyun.com/download/install.sh

b)chmod +x install.sh

c).sh install.sh

2. Ubuntu、debian 系统:

a)下载http://update.aegis.aliyun.com/download/install.sh

b)chmod +x install.sh

c).bash install.sh

/usr/local/aegis/alihids/AliHids -scan -dir /xxxx

然后查看路径

/usr/local/aegis/globalcfg/reports

下的文件,如果存在webshell 会写在webshell.txt 中

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注