SQL注入

通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。从而非法查看或篡改数据库的内容、规避认证、执行和数据库服务器相关的程序.
如:在URL中,加--表示注释,会将一部分内容注释掉.

解决方案:SQL语句必须要经过过滤再执行,现在大部分框架都默认会做到这些。

XSS

XSS就是跨站点脚本攻击(Cross Site Scripting),通过安全漏洞的Web网站注册用户的浏览器内运行非法的HTML代码或者JavaScript进行的一种攻击。攻击者在网页上发布包含攻击性代码的数据。当浏览者看到此网页时,特定的脚本就会以浏览者用户的身份和权限来执行。通过XSS可以比较容易地修改用户数据、窃取用户信息,以及造成其它类型的攻击.

解决方案:确保输出到HTML页面的数据以HTML的方式被转义

CSRF

CSRF(Cross-site request forgery)是指通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某种状态更新,属于被动攻击。如:利用已通过认证的用户权限更新设定信息、利用已通过认证的用户权限购买商品、利用已通过认证的用户权限在留言板上发表言论等

解决方案:在客户端页面增加伪随机数,例如Laravel的 csrf_tocken

HTTP Header攻击

HTTP Header攻击是指通过响应首部字段被插入换行、添加任意响应首部或主体的一种攻击。属于被动攻击模式。向首部主体添加内容的攻击称为HTTP响应截断攻击。
攻击模式:Web应用有时会将从外部接收到的数值,赋给响应首部字段Location和Set-Cookit。HTTP首部注入通过在某些响应首部字段需要处理输出值的时候,插入换行发动攻击。

解决方案:在设置HTTP响应头的代码中,过滤回车换行(%0d%0a、%0D%0A)字符;禁止header()函数中的参数外界可控

Cookie攻击

Cookie攻击是指基于HTTP Cookie攻击的前提是目标系统在Cookie中保存了用户ID,凭证,状态等其他可以用来进行攻击的信息。在客户端和服务端进行Cookie信息传递时候进行截取,进而冒充合法用户进行操作。攻击者修改Cookie信息,所以在服务端接收到客户端获取的Cookie信息的时候,就会对攻击者伪造过的Cookie信息进行操作

解决方案:不要在Cookie中保存没有经过加密的或者容易被解密的敏感信息;对从客户端取得的Cookie信息进行严格校验;使用SSL/TLS来传递Cookie信息

目录遍历攻击

目录遍历攻击是指通过Web应用对文件操作处理时,由外部指定文件名的处理存在漏洞的情况下,用户可用../../etc/passed等相对路径定位到绝对路径上面,因此服务器上任意的文件或文件目录皆有可能被访问到。就可以去非法浏览、篡改或删除Web服务器上的文件。

解决方案:对目录和文件进行权限控制,谨慎处理传向文件系统API的参数

文件上传

文件上传是指利用上传漏洞可以直接得到WEBSHELL,危害等级超级高,现在的入侵中上传漏洞也是常见的漏洞。导致该漏洞的原因在于代码作者没有对访客提交的数据进行检验或者过滤不严,可以直接提交修改过的数据绕过扩展名的检验。

解决方案:限制文件上传的类型、大小;确保上传的文件被访问时能按照功能设计正确返回