web安全
(1)跨站脚本攻击(XSS):
XSS攻击,通常指黑客通过“html注入” 篡改了网页,插入了恶意的脚本,从而在用户浏览网页的时候,控制用户浏览器的一种攻击。
最常见的XSS攻击就是通过读取浏览器的Cookie对象,从而发起“cookie劫持”,当前用户的登录凭证存储于服务器的session中,而在浏览器中是以cookie的形式进行存储的,cookie被劫持后,意味着攻击者可以不通过密码而直接登录系统。我们也可以直接在浏览器中输入脚本javascript:alert(document.cookie)来获取当前cookie值。
目前防止“cookie劫持”的方法大致有:a. 输入检查,使用filter来过滤敏感的关键字;b. 将cookie与用户ip地址进行绑定;c. 为cookie植入HttpOnly标识。
本系统采用的是第3种方式:为cookie植入HttpOnly标识。一旦这个HttpOnly被设置,你在浏览器的 document对象中就看不到Cookie了,而浏览器在浏览的时候不受任何影响,因为Cookie会被放在浏览器头中发送出去(包括ajax的时 候),应用程序也一般不会在js里操作这些敏感Cookie的,对于一些敏感的Cookie我们采用HttpOnly,对于一些需要在应用程序中用js操作的cookie我们就不予设置,这样就保障了Cookie信息的安全也保证了应用。

图1-1 浏览器cookie截图
(2)跨站点请求伪造(CSRF):
本系统采用了对抗CSRF最有效的防御方法:验证码。
1.1.2 服务器端应用安全
服务器端的安全相对于客户端来说显的更加的重要,因为服务器端的某个安全漏洞可能带来的是致命的危险。因此我们对服务器端的安全更为的慎重和重视。
(1)SQL注入攻击:
Sql注入的的两个关键条件:第一个是用户能够控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。
根据上面两个关键条件,系统为防止sql注入使用了以下方法:
第一:使用预编译语句,这也是防御sql注入最有效的方法,完全摒弃代码的直接拼接所带来的危险。
第二:关闭web服务器的错误回显功能,这样可以防止攻击者对系统进行攻击后,通过回显的详细错误信息对攻击内容进行调整,对攻击者提供极大的便利。
第三:数据库自身使用最小权限原则,系统程序不使用最高权限的root对数据库进行连接,而是使用能满足系统需求的最小权限账户进行数据库连接,而且多个数据库之间使用不同的账户,保证每个数据库都有独立对应的账户。
(2)文件上传漏洞:
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过脚本文件获得了执行服务器端命令的能力,这样将会导致严重的后果。而本系统内涉及到大量的图片格式文件上传,因此对于上传问题的处理非常谨慎,并尽可能的达到安全标准。
本系统主要通过对上传文件详细的格式验证:
第一步:通过后缀名来简单判断文件的格式。
第二步:通过读取文件的前两个字符进行对比,例如png格式图片的前两个字符为8950,而jpg格式的图片前两个字符为ffd8。
第三步:如果上传的为图片,则获取相应的高度和宽度,如果存在相应的宽度和高度则可认为上传的是图片。
如果以上验证都成功通过,本系统在对文件进行存储时会将文件名进行重命名处理,并且设置相应的web服务器,默认不显示目录。因为文件上传如果需要执行代码,则需要用户能够访问到这个文件,因此使用随机数改写了文件名,将极大的增加攻击的成本,甚至根本无法成功实施攻击。
(3)认证与会话管理:
认证实际上就是一个验证凭证的过程,因此我们对登录密码有着严格的规定:密码要求长度在8位以上并且包含字母,数字,符号两种以上的组合。并将密码加密后再进行数据库的存储。为防止一些暴力破解手段,又出于用户体验的考虑,本系统采用用户登录时默认不进行验证码的输入,但密码三次输入失败后需要进行验证码的输入,连续五次输入错误后,该用户的ip地址将被封,可以在一段时间后自动解封或者后台管理员手动解封。涉及到系统资金有关的操作,例如投标,我们还需要用户设置并提供支付密码,而提现等操作我们还配备短信验证码功能。以此来增强验证的可靠性。
当用户登录完成后,在服务器端会创建一个新的会话(Session),会话中保存着用户的状态和相关信息,服务器端维护所有在线用户的Session,而浏览器则是将SessionId加密后保存在cookie中,这里就出现了前面提到了“cookie劫持“问题,本系统通过将cookie中植入HttpOnly成功解决该问题。本系统还给Session设置了一个有效时间,来保证在有效时间后Session将自动销毁,以防止Session长连接所带来的安全隐患。
(4)访问控制:
访问控制实际上就是建立用户和权限之间的对应关系,本系统采用的是“基于角色的访问控制”,根据相应功能模块的划分相应的权限,并将相应的权限分配给不同的角色,再将角色分配给用户,用户就拥有了该角色所持有的权限。
文章来自: https://www.cnblogs.com/shenliang123/p/3835116.html

浙公网安备 33010602011771号