PHP实战WEB网站常见攻击方法及解决方案攻击(XSS)跨站脚本攻击(XSS,Cross-sitescripting)是攻击WEB网站最常见也是最基本的方法。攻击者在网页上发布包含攻击性代码的数据。当查看者看到此网页时,将以查看者用户的身份和权限执行特定脚本。通过XSS,相对容易修改用户数据,窃取用户信息,引发其他类型的攻击,如CSRF攻击。我推荐一个学习氛围很好的地方。Python交流裙:点击进入,免费领取PHP学习资料合集适合大学生,初学者,想转行,想通过此找工作。裙子里有海量学习资料,有高手解答沟通问题,每晚还有免费优质腾讯直播课堂。常见的解决方法:确保输出到HTML页面的数据在HTML中进行转义。跨站脚本攻击。比如找不到/gift/giftList.htm?page=2这个页面,错误页面直接原样输出url。如果攻击者在url后添加攻击代码发送给受害者,则可能发生XSS攻击跨站请求伪造(CSRF)是另一种常见的攻击。攻击者通过各种方法伪造请求,模仿用户提交表单的行为,从而达到修改用户数据或执行特定任务的目的。为了冒充用户身份,CSRF攻击往往结合XSS攻击,但也可以采用其他手段,如诱使用户点击包含攻击的链接。解决方案是:1.使用POST请求增加攻击难度。用户单击链接会发起GET类型的请求。POST请求难度相对较大,攻击者往往需要使用javascript来实现。2.对请求进行鉴权,确保请求确实为用户本人填写并提交,而非第三方伪造。具体可以在session中加入token,保证看到信息和提交信息的是同一个人。HttpHeadsattack凡是使用浏览器浏览任何WEB网站的人,无论你的WEB网站使用什么技术和框架,使用的都是HTTP协议。HTTP协议在Responseheader和content之间,有一个空行,也就是两组CRLF(0x0D0A)字符。此空行标记标题的结尾和内容的开头。“聪明”的攻击者可以利用这一点。只要攻击者有办法将任何字符“注入”到标头中,这种攻击就可能发生。以登录为例:有这样一个url:http://localhost/login?page=h...登录成功后,需要重定向回page参数指定的页面。以下是重定向发生时的响应标头。HTTP/1.1302临时移动日期:2010年8月17日星期二20:00:29GMT服务器:Apachemod\_fcgid/2.3.5mod\_auth\_passthrough/2.1mod\_bwlimited/1.4FrontPage/5.0.2.2635Location:http://localhost/index如果你修改URL如下:http://localhost/login?page=h...那么重定向发生时的响应将变成如下看起来像:HTTP/1.1302MovedTemporarilyDate:Tue,172010年8月20:00:29GMT服务器:Apachemod\_fcgid/2.3.5mod\_auth\_passthrough/2.1mod\_bwlimited/1.4FrontPage/5.0.2.2635位置:http://localhost/checkoutalert('hello')Thispage可能会不小心执行隐藏在URL中的javascript。类似的情况不仅出现在重定向(Locationheader)中,也出现在其他的header中,比如Set-Cookieheader。如果这种攻击成功,它可以做很多事情,比如:执行脚本,设置额外的cookies(Set-Cookie:evil=value)等。避免这种攻击的方法是过滤所有的响应头,去掉非法的标题中出现的字符,尤其是CRLF。服务器通常会限制请求标头的大小。例如,Apache服务器默认将请求标头限制为8K。如果超过8K,ApacheServer将返回400BadRequest响应:对于大多数情况,8K已经足够大了。假设应用在cookie中保存了一些用户输入的内容,可能会超过8K。如果攻击者向受害者发送超过8K的头部链接,服务器将拒绝访问。解决办法是检查cookie的大小,限制新cookie的总大小写,减少header过大导致的拒绝访问攻击。Cookie攻击很容易通过JavaScript获取当前网站的cookies。你可以打开任何一个网站,然后在浏览器地址栏输入:javascript:alert(doucment.cookie),就可以立即看到当前站点的cookie(如果有的话)。攻击者可以利用此功能获取您的关键信息。例如,结合XSS攻击,攻击者在您的浏览器上执行特定的JavaScript脚本来获取您的cookie。假设站点完全依赖cookie来验证用户身份,攻击者可以通过冒充您来做一些事情。大多数浏览器现在都支持在cookie上标记HttpOnly。带有此标记的Cookie无法通过JavaScript获取。如果能在关键cookies上打上这个标记,将大大增强cookies的安全性。一种常见的攻击方法是“网络钓鱼”。网络钓鱼攻击者通常会向受害者发送合法链接。当点击该链接时,将用户引导至一个似是而非的非法网站,从而达到骗取用户信任、窃取用户信息的目的。为了防止这种行为,我们必须对所有的重定向操作进行审计,避免重定向到危险的地方。常见的解决方案是白名单,将要重定向的合法网址添加到白名单中,非白名单上的域名在重定向时会被拒绝。第二种方案是重定向token,将token添加到合法的url中,重定向时进行验证。上传文件攻击1、文件名攻击,上传的文件使用之前上传的文件名可能会导致:客户端和服务端的字符编码不兼容,导致文件名乱码;文件名包含脚本,可能会引起攻击。2.文件后缀攻击。上传文件的后缀可能是exe可执行程序、js脚本等文件,这些程序可能在受害者的客户端执行,甚至在服务器端执行。因此,我们必须过滤文件名后缀,排除那些不允许的文件名后缀。3.文件内容攻击。IE6有一个很严重的问题,它不信任服务器发送的内容类型,而是根据文件的内容自动识别文件的类型,并根据识别的类型显示或执行文件。如果你上传一个gif文件,在文件末尾放一段js攻击脚本,它可能会被执行。这种攻击,其文件名和内容类型看似是合法的gif图片,但其内容却包含脚本。此类攻击不能通过文件名过滤来排除,但必须扫描其文件的内容以识别它们。
