随着互联网的普及,网络安全变得越来越重要,程序员需要掌握最基本的web安全防范,下面列举一些常见的安全漏洞和对应的防御措施。
0x01: XSS漏洞
1、XSS简介
跨站脚本(cross site script)简称为XSS,是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式。
XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去,使别的用户访问都会执行相应的嵌入代码。
2、XSS攻击的危害
盗取用户资料,比如:登录帐号、网银帐号等
利用用户身份,读取、篡改、添加、删除数据等
盗窃重要的具有商业价值的资料
非法转账
强制发送电子邮件
网站挂马
控制受害者机器向其它网站发起攻击
3、防止XSS解决方案
XSS的根源主要是没完全过滤客户端提交的数据 ,所以重点是要过滤用户提交的信息。
将重要的cookie标记为http only, 这样的话js 中的document.cookie语句就不能获取到cookie了。
只允许用户输入我们期望的数据。例如:age用户年龄只允许用户输入数字,而数字之外的字符都过滤掉。
对数据进行Html Encode 处理:用户将数据提交上来的时候进行HTML编码,将相应的符号转换为实体名称再进行下一步的处理。
过滤或移除特殊的Html标签。
过滤js事件的标签。例如 "onclick=", "onfocus" 等。
0x02:CSRF攻击(跨站点请求伪造)
1、CSRF简介
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
XSS主要是利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求,来利用受信任的网站。与XSS攻击相比,CSRF更具危险性。
2、CSRF攻击的危害
主要的危害来自于,攻击者盗用用户身份,发送恶意请求。比如:模拟用户发送邮件,发消息,以及支付、转账等。
3、防止CSRF的解决方案
重要数据交互采用POST进行接收,当然是用POST也不是万能的,伪造一个form表单即可破解。
使用验证码,只要是涉及到数据交互就先进行验证码验证,这个方法可以完全解决CSRF。
但是出于用户体验考虑,网站不能给所有的操作都加上验证码。因此验证码只能作为一种辅助手段,不能作为主要解决方案。
验证HTTP Referer字段,该字段记录了此次HTTP请求的来源地址,最常见的应用是图片防盗链。
为每个表单添加令牌token并验证。
0x03:SQL注入漏洞
1、简介
SQL注入是比较常见的网络攻击方式之一,主要是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,实现无帐号登录,甚至篡改数据库。
2、SQL注入的危害
3、SQL注入的方式
通常情况下,SQL注入的位置包括:
4、防止SQL注入的解决方案
对用户的输入进行校验,使用正则表达式过滤传入的参数;
使用参数化语句,不要拼接sql,也可以使用安全的存储过程;
不要使用管理员权限的数据库连接,为每个应用使用权限有限的数据库连接;
检查数据存储类型;
重要的信息一定要加密;
0x04:DDOS攻击
1、DOS攻击和DDOS简称
DOS攻击(Denial of Service 拒绝服务攻击):凡是利用网络安全防护措施不足导致用户不能继续使用正常服务的攻击手段,都可以被称为是拒绝服务攻击,其目的是通过消耗网络宽带或系统资源,使网络或计算机不能提供正常的服务。
DDOS(Distributed Denial of Service ,分布式拒绝服务),凡是攻击者通过控制在网络上的傀儡主机,同时发动他们向目标主机进行拒绝服务攻击的方式称为分布式拒绝服务攻击。
2、DDOS的危害
3、如何防御DDOS攻击
总之就是既要做好过滤与编码并使用参数化语句,也要把重要的信息进行加密处理,这样SQL注入漏洞才能更好的解决。