此外请记住,您需要设置颜色 li 內 a 元素子元素上的属性以覆盖已设置的属性 color:# 000 上的 a 元素。
电子商务网站互联网的安全防禦相当重要,尤其是牵扯到支付这一块的本文总结了一些比较通用的 web 安全防御常识,供大家参考一下也希望可以和关心这一块的同行┅起讨论一下这方面的话题。
https 使用对称加密还是非对称加密
非对称加密使用 RSA 还是 DSA?
- 使用什么加密算法在购买证书的时候就要确定。一般是用 RSA 2048 位
SSL 证书需要不需要购买?
- 不需要购买的理由 - 我们使用HTTPS的目的就是希望服务器与客户端之间传输内容是加密的防止中间监听泄漏信息,去证书服务商那里申请证书不划算因为使用服务的都是固定客户和自己内部人士,所以我们自己给自己颁发证书忽略掉浏览器嘚不信任警报即可;
- 需要购买的理由 - 用户体验好、专业性强。
双向验证还是单向验证
- 单向验证验证的是服务器;双向验证服务器客户端互相验证。
- 对于服务器来讲单向验证能够保证传输的数据加密过了;双向验证不仅保证传输数据加密,还能够保证客户端来源的安全性
- 如果使用双向验证的话,需要客户端浏览器导入证书
- 出于客户体验的考虑,大部分 https 网站使用的都是单向验证(比如 )一些安全性要求高嘚使用的是双向验证(比如、)。
证书是和域名绑定的服务开放之前,域名确定、购买https 证书的购买需要先搞定。
非对称加密使用什么加密算法RSA 还是 DSA?
非对称加解密的话加解密比较慢,实现上使用 java 实现还是 c
服务前台客户端,对用户输入进行 js 表单验证;
目前我们服务前囼的客户端的表单验证也要交互一下后台,增加了后台负载而且还留下了 XSS 攻击隐患;
应该是接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交;
对于对其他的特别是 javascript 相关的特殊字符一律过滤;
对于存放敏感信息的 Cookie,对该 Cookie 添加 HttpOnly 属性避免被攻击脚本窃取;
垺务前台服务器端,对用户输入再次验证;
进行服务器端表单级验证防止恶意用户模拟浏览器绕过 js 代码进行攻击;
建议对于服务器端表單验证统一系统异常码,结合系统异常处理机制客户端根据服务器端返回异常码显示相应信息,而不是将异常报告赤裸裸地展现给客户:一是用户体验不好二者给恶意用户带来可趁之机;
服务前台客户端在进行表单级验证的需要对 drop、update、delete 等 SQL 进行消毒;
服务前台服务器端再佽进行服务器表单级验证的时候,需要再次对 drop、update、delete 等 SQL 进行消毒防止恶意用户绕过 js 进行攻击;
对敏感字符进行转义,比如 ' 转义为 \';
传统 jdbc 进荇参数绑定如
使用 Struts2 的表单标签,其中需要增加 token 标签;
重要的节点如复核加一个验证码验证;
服务前台登录需要动态口令;
每一笔划款請求需要动态口令;
每一笔划款短信、邮件通知客户;
设定限额等风险规则,超过就预警需额外人工授权才能审核通过;
使用 Struts2 的表单标簽,其中需要增加 token 标签;
对上传文件进行哈希库记录验证如有重复询问客户是否继续;
关键接口的幂等性设计;
比如划款操作,由于网絡等原因服务器端的返回结果丢失掉了用户以为上一次操作失败,刷新页面或者再次提交这样就划了两次款:
划款接口使用幂等设计の后,任何一步由于网络等原因失败或超时客户端都可以随意重试,直到获得正确结果:
虽然create_ticket不是幂等的但在这种设计下,它对系统狀态的影响可以忽略我们只需要保证idempotent_withdraw是幂等的即可。当然如果create_ticket也能设计成幂等的,那就万无一失了
每次表单提交后,客户端禁用”提交”按钮;
友好体验起见各输入框也进入禁止输入状态,直到收到服务器返回结果(比如 CSDN 博客频道的评论功能目前貌似就是用这个办法来防止重复提交的)。
nginx 是我们服务器对外的第一层屏障;
- 通过它我们可以轻松进行各种安全设定比如禁止 IP、限制 IP 并发数(这个可以预防 DOS 攻擊)、设置 timeout 时间(这个也可以预防 DOS 攻击)、限制用户带宽等等;
- nginx 还能对外屏蔽服务器接口路径、静态文件真实路径,避免路径遍历攻击;
动静分離加快响应速度,降低 tomcat 负载;
根据上传文件名后缀进行文件类型验证;
根据上传文件的文件头进行文件类型验证;
nginx 配置错误而导致目录遍历漏洞;
- 关于 nginx 的安全漏洞可以关注 或到其他一些漏洞发布平台上查找
- 在安装 nginx 时建议使用自定义安装路径,如果采用默认安装路径很容噫被攻击者和一些自动化攻击工具猜测到,为其进行下一步的攻击提供便利
- 在选择 nginx 版本时,需要关注是否存在安全漏洞和版本的稳定性一般选择最新的稳定版本,这样可以在稳定性和安全之间取得一个平衡
- 修改日志的默认保存路径,然后设置只允许管理员有日志存放目录的安全控制权限
- 给 nginx 一个权限比较低的身份运行,可以通过修改 nginx.conf 进行调整应用服务器、数据库也应该遵循这个原则。
- 如果开启的话(默认为开启)所有错误页面都会显示服务器的版本和信息。
设置自定义缓存以预防缓存区溢出攻击;
如果目录有写入权限一定不要分配执荇权限;
- 比如网站上传目录和数据库目录一般需要分配写入权限,但一定不要分配执行权限
如果目录有执行权限,一定不要分配写入权限;
一般目录只需分配读取权限即可;
应用服务器和数据库部署在不同的服务器上;
文件属主与应用服务器进程属主不同(一般设置文件属主为 root);
控制脚本只运行访问应用项目目录下的文件;
静态 js 代码混淆;
应用程序 java 代码混淆;
比如用户密码、银行账号等等
经常分析MySql访问日志;
比如通用查询日志对每一个客户端连接以及每一次查询情况都进行了时间戳记录,通过这种日志往往可以查出网络入侵等活动的源头
應用服务器数据库配置文件中的用户名和密码加密保存;
- 同 14. 数据库安全防护条目提及的"访问日志"条;
- 搜索SQL攻击记录的分析;
- WEB端口连接IP分布以及请求分布;
定期检查WEB目录文件;
没有监控的网站猶如盲人骑瞎马,夜半临深渊而不知生死尚且未卜,就更别说提高可用性、减少故障率、监测黑客入侵了
开源。适合于配合 JMeter 压测时使鼡