服务器端应用安全

原文链接:http://blog.csdn.net/qq_22329521/article/details/76128654

SQL注入

盲注

Web服务器关闭了错误回显,对于攻击者就缺少了重要的调试信息,所以攻击者知道一个方法来验证SQL语句是否执行
比如

http://xxxx.com/items.php?id=2
构造
http://xxxx.com/items.php?id=2 and 1=2
如果页面是空的,或者出差,可以猜测这可能存在注入的机会
再次修改
http://xxxx.com/items.php?id=2 and 1=1
如果正常返回,就可以判断注入成功

BENCHMARK函数

BENCHMARK函数用来测试函数性能

BENCHMARK(10000000,ENCODE('msg','by 5 seconds'))
将encode(xxx,xxx)执行xxxx次数

利用BENCHMARK函数,可以让同一个行数执行若干次,使得结果返回的时间比平时长,通过时间长度变化,可以判断注入语句是否执行成功

下面有具体的sql实例
http://blog.csdn.net/emaste_r/article/details/8156108

防御sql注入

  • 预编译语句,绑定变量
  • 使用存储过程,调用存在数据库里的函数
  • 检查数据类型,如果输入是数字,就用integer做检验,如果是邮箱则正则表达式去做校验等
  • 使用定义好的安全函数来转义。
  • 设置数据库用户的最小权限。

文件上传漏洞

文件上传后导致的常见安全问题一般有:

  • 上传文件是Web脚本语言,服务器的Web容器解释并执行用户上传的脚本,导致代码执行
  • 上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为(其他通过类似行为控制策略文件的情况类似)
  • 上传文件是病毒,木马文件,用以诱惑用户或者管理员下载执行
  • 上传文件是钓鱼图片或为包含脚本的图片,在某些版本浏览器中会被作为脚本执行,被用于钓鱼和欺诈

设计安全的文件上传功能

  • 文件上传的目录设置为不可执行:只要Web容器无法解析该目录下的文件,即使上传了脚本文件也不收影响
  • 判断文件类型:可以结合MIME Type,后缀检查等方式。
  • 使用随机数改写文件名和文件路径:只要修改路径,上传的文件查找的不容易
  • 单独设置文件服务器的域名:同源策略的关系,一系列客户端攻击将生效

用户信息管理

密码强度
  • 普通应用要求长度为6位以上
  • 重要应用要求长度为8位以上,并考虑双因素认证
  • 密码区分大小写字母
  • 密码为大写字母,小写字幕、数字、特殊符号中两种以上的组合
  • 不要有连续性的字符
  • 尽量避免出现重复的字符
  • 密码保存:必须以不可逆的加密算法,或者是单向散列函数算法,加密后存储在数据库中
  • 在计算密码明文的时候加一个salt MD5(salt+password),避免password 单一容易被彩虹表收集到

Session注意点

  • Seesion在登陆完成后,重写SessionId,避免SessionFixation攻击
  • 服务器设置固定时间强制销毁Session,因为客户端可以修改用户的存活时间,定时拿seesionId去请求。
  • 降低SSO的风险,在一些敏感的系统,在单独实现额外的认证机制。

访问控制

  • 垂直权限管理:现在应用广泛的一种方法是基于角色的范围控制:RBAC,Java中的Spring Security 权限管理,就是RBAC模型的一个实现
  • 水平权限管理,RBAC只能验证用户A属于角色RoleX,但不会判断用户A是否能访问只属于用户B的数据B,发生了越权访问,这种问题一般是具体问题具体解决,至今仍是一个难题,它难以发现
  • 设计方案时,都应该满足“最小权限原则"

加密算法与随机数

略。。。

记下结论

  • 不要使用ECB模式
  • 不要使用流密码(RC4)
  • 使用HMAC-SHA1替代MD5(甚至是替代SHA1)
  • 不要使用相同的key做不同的事情
  • salts与IV需要随机生成
  • 不要自己实现加密算法,尽量使用安全专家已经实现好的库
  • 不要依赖系统的保密性
  • 使用CBC模式的AES256加密
  • 使用HMAC-SHA512用于完整性检查
  • 使用带salt的SHA-256或SHA-512用于Hash

DDOS

DDOS又称为分布式拒绝服务利用合理的请求造成资源过载,导致服务不可用

SYN flood攻击

  1. 客户端向服务器端发送一个SYN包,包含客户单使用的端口号和初始序列号X
  2. 服务器端接受到客户单发送的SYN包后,向客户端发送一个SYN包和ACK都置位的TCP报文,包含确认号x+1和服务器端的初始序列号y
  3. 客户端收到服务器端返回的SYN+ACK报文后,向服务器端返回一个确认号为y+1、序号为x+1的ACK报文,一个标准的TCP连接

SYN flood攻击,首先伪造大量的源IP地址,分别向服务器端发送大量的SYN包,此时服务器端会返回SYN/ACK包,因为源地址是伪造的,所以伪造的IP并不会应答,服务器端没有收到伪造IP的回应,会重试3-5次并且等待一个SYN Time(一般为30秒至2分钟),如果超时则丢弃连接。攻击者大量发送这种伪造源地址的SYN请求,服务器会消耗非常多的资源来处理这种半连接。

对抗SYN flood的主要策略有SYN Cookie/SYN Proxy,safereset等算法,SYN Cookie 主要思想是为每一个IP地址分配一个 cookie,并统计每个ip地址的访问频率,如果短时间收到大量的请求,则丢弃这些ip地址的包

应用层DDOS

由于发生在应用层,tcp三次握手已经完成,连接建立,发起的ip都是真实的,这种ddos逼网络层ddos更可怕
CC攻击
CC攻击原理非常简单,就是对一些消耗资源较大的应用页面不断发起正常的请求,以达到消耗服务器资源的目的。在Web应用中,查询数据库,读/写硬盘文件等操作,相对都会消耗成比较多的资源
应用层的攻击还可以通过一下方式:黑客入侵了一个流量大的网站后,通过篡改页面,将巨大的用户流量分流到目标网站

<iframe src="target" width=0,height=0/>

资源耗尽攻击

Slowloris攻击
其原理是以极低的速度往服务器发送HTTP请求。由于Web Server对于并发的连接数有一定的上限,因此若是恶意地占用住这些连接不释放。那么无法接收到正常的请求
实现是构造一个畸形的HTTP请求

Content-Length:42\r\n\r\n

由于WebServer只收到一个\r\n,因此将认为Http Headers部分没有结束,并保持

优化服务器性能的方式

  • 将使用频率高的数据放到memcache中,将数据库的压力转移到内存中,此外及时释放资源
  • 在针对每个客户端做一个请求频率的限制(但是如果对方使用代理服务器通过不断变化IP地址,如果服务器对单个IP地址的请求就无效了)
  • 在网络架构上做好优化,善于利用负载均衡,避免用户流量集中在单台服务器上,同时可以充分利用好CDN和镜像站点的分流作用,缓解主站的压力
  • 验证码,为了识别人与机器的交互
  • 可以在Http头中的User-Agent字段来识别客户端,让客户端解析一段JavaScript,并给出正确的运行结果等
  • 在WebServer做出一些处理,其好处在于请求尚未到达后端,在Apache的配置文件中,有一些参数可以缓解DDOS攻击,比如调小Timeout,KeepAliveTimeout值,增加MaxClients的值

垃圾处理

如何防范垃圾注册和垃圾消息,垃圾处理离不开
两个步骤:‘识别’和‘拦截’
"批量"和“自动化”的特点意味着:

  1. 同一客户端会多次请求同样的URL地址
  2. 页面与页面直接的跳转流程不支持
  3. 同意客户端两次请求时间短
  4. 客户端的UserAgent看起来不像浏览器
  5. 客户端可能无法解析JavaScript和Flash
  6. 在大多数情况下验证码是有效的

如果在从垃圾注册和垃圾消息的内容分析,发现的特点

  1. 注册时填写的用户名可能是随机生成的字符串,而非自然语言
  2. 不同账号的资料可能出现同样的内容
  3. 可能含有一些敏感词
  4. 可能出现文字变形,比如全角变半角

与业务结合,更多的特征

  1. 如果某个用户给多个用户发送消息,但是接受者不会,这个人可能在发送消息
  2. 如果某个用户加入IM群中,发送的消息是相同的内容,不说其他话,可能也是在发送垃圾消息

有了这些特征,可以建立规则和模型

参考文章
白帽子讲Web安全
http://www.bubuko.com/infodetail-1784365.html
http://blog.csdn.net/emaste_r/article/details/8156108

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容