图书介绍

Web应用安全权威指南PDF|Epub|txt|kindle电子书版本网盘下载

Web应用安全权威指南
  • (日)徳丸浩著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:9787115370471
  • 出版时间:2014
  • 标注页数:378页
  • 文件大小:53MB
  • 文件页数:402页
  • 主题词:网页制作工具

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

Web应用安全权威指南PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 什么是Web应用的安全隐患1

1.1 安全隐患即“能用于作恶的Bug”2

1.2 为什么存在安全隐患会有问题3

经济损失3

法律要求3

对用户造成不可逆的伤害4

欺骗用户4

被用于构建僵尸网络4

1.3 产生安全隐患的原因6

1.4 安全性Bug与安全性功能7

1.5 本书的结构8

第2章 搭建试验环境9

2.1 试验环境概要10

2.2 安装VMware Player11

什么是VMware Player11

下载VMware Player11

安装VMware Player12

2.3 安装虚拟机及运行确认14

虚拟机启动确认14

虚拟机的使用方法15

编辑hosts文件16

使用ping确认连接16

Apache与PHP的运行确认17

设置并确认邮箱账号17

2.4 安装Fiddler18

什么是Fiddler18

安装Fiddler18

Fiddler的运行确认及简单用法18

参考:虚拟机的数据一览19

参考:如果无法连接试验环境的POP3服务器20

第3章 Web安全基础:HTTP、会话管理、同源策略21

3.1 HTTP与会话管理22

为什么要学习HTTP22

最简单的HTTP22

使用Fiddler观察HTTP消息23

请求消息24

响应消息24

状态行25

响应头信息25

如果将HTTP比喻为对话25

输入-确认-注册模式26

POST方法28

消息体28

百分号编码29

Referer29

GET和POST的使用区别29

hidden参数能够被更改30

将hidden参数的更改比作对话32

hidden参数的优点32

无状态的HTTP认证33

体验Basic认证33

专栏 认证与授权36

Cookie与会话管理36

使用Cookie的会话管理39

会话管理的拟人化解说39

会话ID泄漏的原因42

Cookie的属性42

专栏 Cookie Monster Bug44

总结45

3.2 被动攻击与同源策略46

主动攻击与被动攻击46

主动攻击46

被动攻击46

恶意利用正规网站进行的被动攻击47

跨站被动攻击48

浏览器如何防御被动攻击48

沙盒49

同源策略49

应用程序安全隐患与被动攻击52

专栏 第三方JavaScript53

JavaScript以外的跨域访问54

frame元素与iframe元素54

专栏 X-FRAME-OPTIONS54

img元素54

script元素54

CSS55

form元素的action属性55

总结56

第4章 Web应用的各种安全隐患57

4.1 Web应用的功能与安全隐患的对应关系58

安全隐患产生于何处58

注入型隐患59

总结60

4.2 输入处理与安全性61

什么是Web应用的输入处理61

检验字符编码62

转换字符编码62

检验并转换字符编码的实例62

专栏 字符编码的自动转换与安全性64

输入校验64

输入校验的目的64

输入校验与安全性65

二进制安全与空字节攻击65

仅校验输入值并不是安全性策略66

输入校验的依据是应用程序的规格67

哪些参数需要校验67

PHP的正则表达式库67

使用正则表达式检验输入值的实例(1)1~5个字符的字母数字68

使用正则表达式检验输入值的实例(2)住址栏70

专栏 请注意mb_ereg中的\d与\w70

范例70

专栏 输入校验与框架71

总结72

参考:表示“非控制字符的字符”的正则表达式73

4.3 页面显示的相关问题75

4.3.1 跨站脚本(基础篇)75

概要75

攻击手段与影响76

XSS窃取Cookie值76

通过JavaScript攻击79

篡改网页80

反射型XSS与存储型XSS82

安全隐患的产生原因84

HTML转义的概要84

元素内容的XSS85

没有用引号括起来的属性值的XSS85

用引号括起来的属性值的XSS85

对策86

XSS对策的基础86

指定响应的字符编码87

XSS的辅助性对策88

对策总结89

参考:使用Perl的对策示例89

使用Perl进行HTML转义的方法89

指定响应的字符编码89

4.3.2 跨站脚本(进阶篇)90

href属性与src属性的XSS91

生成URL时的对策92

校验链接网址92

JavaScript的动态生成92

事件绑定函数的XSS92

script元素的XSS94

JavaScript字符串字面量动态生成的对策95

DOM based XSS97

允许HTML标签或CSS时的对策99

参考:Perl中转义Unicode的函数99

4.3.3 错误消息导致的信息泄漏100

总结100

继续深入学习100

4.4 SQL调用相关的安全隐患101

4.4.1 SQL注入101

概要101

攻击手段与影响102

示例脚本解说102

错误消息导致的信息泄漏103

UNION SELECT致使的信息泄漏104

使用SQL注入绕过认证104

通过SQL注入攻击篡改数据106

其他攻击107

专栏 数据库中表名与列名的调查方法108

安全隐患的产生原因109

字符串字面量的问题109

针对数值的SQL注入攻击110

对策110

使用占位符拼接SQL语句111

专栏 采用MDB2的原因111

为什么使用占位符会安全111

参考:LIKE语句与通配符113

使用占位符的各种处理114

SQL注入的辅助性对策116

总结117

继续深入学习117

参考:无法使用占位符时的对策117

参考:Perl+MySQL的安全连接方法118

参考:PHP+PDO+MySQL的安全连接方法118

参考:Java+MySQL的安全连接方法118

4.5 关键处理中引入的安全隐患120

4.5.1 跨站请求伪造(CSRF)120

概要120

攻击手段与影响121

“输入-执行”模式的CSRF攻击121

CSRF攻击与XSS攻击124

存在确认页面时的CSRF攻击125

专栏 针对内部网络的CSRF攻击127

安全隐患的产生原因128

对策129

筛选出需要防范CSRF攻击的页面129

确认是正规用户自愿发送的请求130

专栏 令牌与一次性令牌131

CSRF的辅助性对策133

对策总结133

4.6 不完善的会话管理134

4.6.1 会话劫持的原因及影响134

预测会话ID134

窃取会话ID134

挟持会话ID135

会话劫持的方法总结135

会话劫持的影响135

4.6.2 会话ID可预测136

概要136

攻击手段与影响136

常见的会话ID生成方法136

使用推测出的会话ID尝试伪装137

伪装造成的影响137

安全隐患的产生原因137

对策138

改善PHP的会话ID的随机性的方法138

参考:自制会话管理机制产生的其他隐患139

4.6.3 会话ID嵌入URL139

概要139

攻击手段与影响140

会话ID嵌入URL所需的条件140

范例脚本解说141

通过Referer泄漏会话ID所需的条件142

攻击流程142

事故性的会话ID泄漏143

影响144

安全隐患的产生原因144

对策144

PHP144

Java Servlet(J2EE)145

ASP.NET145

4.6.4 固定会话ID145

概要145

攻击手段与影响146

示例脚本介绍146

会话固定攻击解说148

登录前的会话固定攻击148

会话采纳151

仅在Cookie中保存会话ID的网站固定会话ID151

会话固定攻击的影响151

安全隐患的产生原因152

对策152

无法更改会话ID时采用令牌153

登录前的会话固定攻击的对策154

总结154

4.7 定向相关的安全隐患155

4.7.1 自由重定向漏洞155

概要155

攻击手段与影响156

安全隐患的产生原因159

允许自由重定向的情况159

对策160

固定重定向的目标URL160

使用编号指定重定向的目标URL160

校验重定向的目标域名160

专栏 警告页面162

4.7.2 HTTP消息头注入162

概要162

攻击手段与影响163

重定向至外部域名165

专栏 HTTP响应截断攻击166

生成任意Cookie166

显示伪造页面168

安全隐患的产生原因170

专栏 HTTP消息头与换行171

对策171

对策1:不将外界参数作为HTTP响应消息头输出171

对策2:执行以下两项内容171

专栏 PHP的header函数中进行的换行符校验173

4.7.3 重定向相关的安全隐患总结173

4.8 Cookie输出相关的安全隐患174

4.8.1 Cookie的用途不当174

不该保存在Cookie中的数据174

参考:最好不要在Cookie中保存数据的原因174

专栏Padding Oracle攻击与MS10-070176

4.8.2 Cookie的安全属性设置不完善176

概要176

攻击手段与影响177

关于抓包方法的注意点180

安全隐患的产生原因181

什么样的应用程序不能在Cookie中设置安全属性181

对策181

给保存会话ID的Cookie设置安全属性的方法182

使用令牌的对策182

使用令牌能确保安全性的原因184

除安全属性外其他属性值需要注意的地方184

Domain属性184

Path属性185

Expires属性185

HttpOnly属性185

总结185

4.9 发送邮件的问题186

4.9.1 发送邮件的问题概要186

邮件头注入漏洞186

使用hidden参数保存收件人信息186

参考:邮件服务器的开放转发187

4.9.2 邮件头注入漏洞187

概要187

攻击手段与影响188

攻击方式1:添加收件人190

攻击方式2:篡改正文191

通过邮件头注入攻击添加附件192

安全隐患的产生原因193

对策194

使用专门的程序库来发送邮件194

不将外界传入的参数包含在邮件头中194

发送邮件时确保外界传入的参数中不包含换行符195

邮件头注入的辅助性对策195

总结196

继续深入学习196

4.10 文件处理相关的问题197

4.10.1 目录遍历漏洞197

概要197

攻击手段与影响198

专栏 从脚本源码开始的一连串的信息泄漏200

安全隐患的产生原因200

对策201

避免由外界指定文件名201

文件名中不允许包含目录名201

专栏 basename函数与空字节202

限定文件名中仅包含字母和数字202

总结203

4.10.2 内部文件被公开203

概要203

攻击手段与影响203

安全隐患的产生原因204

对策205

参考:Apache中隐藏特定文件的方法205

4.11 调用OS命令引起的安全隐患206

4.11.1 OS命令注入206

概要206

攻击手段与影响207

调用sendmail命令发送邮件207

OS命令注入攻击与影响209

安全隐患的产生原因210

在Shell中执行多条命令210

使用了内部调用Shell的函数211

安全隐患的产生原因总结212

对策212

在设计阶段决定对策方针213

选择不调用OS命令的实现方法213

避免使用内部调用Shell的函数213

不将外界输入的字符串传递给命令行参数216

使用安全的函数对传递给OS命令的参数进行转义216

OS命令注入攻击的辅助性对策217

参考:内部调用Shell的函数218

4.12 文件上传相关的问题219

4.12.1 文件上传问题的概要219

针对上传功能的DoS攻击219

专栏 内存使用量与CPU使用时间等其他需要关注的资源220

使上传的文件在服务器上作为脚本执行220

诱使用户下载恶意文件221

越权下载文件222

4.12.2 通过上传文件使服务器执行脚本222

概要222

攻击手段与影响223

示例脚本解说223

专栏 警惕文件名中的XSS224

PHP脚本的上传与执行224

安全隐患的产生原因225

对策225

专栏 校验扩展名时的注意点228

4.12.3 文件下载引起的跨站脚本228

概要228

攻击手段与影响229

图像文件引起的XSS229

PDF下载引起的XSS231

安全隐患的产生原因234

内容为图像时234

内容不为图像时235

对策236

文件上传时的对策236

专栏 BMP格式的注意点与MS07-057238

文件下载时的对策238

其他对策239

专栏 将图像托管在其他域名240

参考:用户PC中没有安装对应的应用程序时240

总结241

4.13 include相关的问题242

4.13.1 文件包含攻击242

概要242

攻击手段与影响243

文件包含引发的信息泄漏244

执行脚本1:远程文件包含攻击(RFI)244

专栏 RFI攻击的变种245

执行脚本2:恶意使用保存会话信息的文件246

安全隐患的产生原因248

对策248

总结248

4.14 eval相关的问题249

4.14.1 eval注入249

概要249

攻击手段与影响250

存在漏洞的应用250

攻击手段252

安全隐患的产生原因253

对策253

不使用eval253

避免eval的参数中包含外界传入的参数254

限制外界传入eval的参数中只包含字母和数字254

参考:Perl的eval代码块形式254

总结255

继续深入学习255

4.15 共享资源相关的问题256

4.15.1 竞态条件漏洞256

概要256

攻击手段与影响257

安全隐患的产生原因258

对策259

避免使用共享资源259

使用互斥锁259

总结260

参考:Java Servlet的其他注意点260

第5章 典型安全功能261

5.1 认证262

5.1.1 登录功能262

针对登录功能的攻击262

通过SQL注入攻击来跳过登录功能262

通过SQL注入攻击获取用户密码263

在登录页面进行暴力破解263

通过社会化攻击得到用户密码263

通过钓鱼方法获取密码264

登录功能被破解后的影响264

如何防止非法登录264

确保系统中不存在SQL注入等安全性Bug264

设置难以猜测的密码265

密码的字符种类和长度要求265

密码的使用现状266

应用程序设计中关于密码的需求266

严格的密码检查原则267

5.1.2 针对暴力破解攻击的对策268

初步认识账号锁定268

暴力破解攻击的检测和对策268

字典攻击269

Joe账号检索269

逆向暴力破解269

针对变种暴力破解的对策269

5.1.3 密码保存方法271

保护密码的必要性271

利用加密方式进行密码保护及其注意事项271

专栏 数据库加密和密码保护272

利用信息摘要来进行密码保护及其注意事项272

什么是信息摘要272

专栏 密码学级别的散列函数需要满足的要求273

利用信息摘要保护密码273

威胁1:离线暴力破解274

威胁2:彩虹破解(Rainbow Crack)275

威胁3:在用户数据库里创建密码字典276

如何防止散列值被破解277

对策1:salt(加盐)277

对策2:stretching(延展计算)278

实现示例278

专栏 密码泄露途径280

5.1.4 自动登录280

危险的实现方式示例281

安全的自动登录实现方式281

延长会话有效期282

使用令牌实现自动登录283

基于认证票的自动登录方式286

三种方法的比较286

如何降低自动登录带来的风险286

5.1.5 登录表单286

专栏 密码确实需要掩码显示吗287

5.1.6 如何显示错误消息288

5.1.7 退出登录功能289

5.1.8 认证功能总结290

参考:彩虹表原理290

5.2 账号管理293

5.2.1 用户注册293

邮箱地址确认293

防止用户ID重复295

例子1:ID相同密码不同可以注册的网站295

例子2:用户ID没有添加唯一性约束的网站295

应对自动用户注册296

利用CAPTCHA防止自动注册296

5.2.2 修改密码297

确认当前密码297

修改密码后向用户发送邮件通知298

密码修改功能容易发生的漏洞298

5.2.3 修改邮箱地址298

修改邮箱地址功能要考虑的安全对策299

5.2.4 密码找回299

面向管理员的密码找回功能300

面向用户的密码找回功能300

对用户进行身份确认301

如何发送密码通知301

5.2.5 账号冻结302

5.2.6 账号删除303

5.2.7 账号管理总结303

5.3 授权304

5.3.1 什么是授权304

5.3.2 典型的授权漏洞304

更改资源ID后可以查看没有权限查看的信息304

只控制菜单的显示或不显示305

使用hidden参数或者Cookie保存权限信息306

授权漏洞总结307

专栏 将私密信息嵌入URL进行授权处理307

5.3.3 授权管理的需求设计307

专栏 什么是角色308

5.3.4 如何正确实现授权管理308

5.3.5 总结309

5.4 日志输出310

5.4.1 日志输出的目的310

5.4.2 日志种类310

错误日志311

访问日志311

调试日志311

5.4.3 有关日志输出的需求311

需要记录到日志里的所有事件312

日志里应包括的信息和格式312

日志文件保护312

日志文件保存位置313

日志文件保存期限313

服务器的时间调整313

5.4.4 实现日志输出313

5.4.5 总结314

第6章 字符编码和安全315

6.1 字符编码和安全概要316

6.2 字符集317

什么是字符集317

ASCII和ISO-8859-1317

JIS规定的字符集318

微软标准字符集318

Unicode319

GB2312319

GBK319

GB18030320

不同字符相同编码的问题320

字符集的处理引起的漏洞320

6.3 字符编码方式321

什么是编码方式321

Shift_JIS321

EUC-JP325

ISO-2022-JP326

UTF-16326

UTF-8327

GB2312329

GBK330

GB18030331

6.4 由字符编码引起的漏洞总结332

字符编码方式中非法数据导致的漏洞332

对字符编码方式处理存在纰漏导致的漏洞332

在不同字符集间变换导致的漏洞332

6.5 如何正确处理字符编码333

在应用内统一使用的字符集333

输入非法数据时报错并终止处理335

处理数据时使用正确的编码方式335

专栏 调用htmlspecialchars函数时必须指定字符编码方式336

输出时设置正确的字符编码方式336

其他对策:尽量避免编码自动检测337

6.6 总结338

第7章 如何提高Web网站的安全性339

7.1 针对Web服务器的攻击途径和防范措施341

7.1.1 利用基础软件漏洞进行攻击341

7.1.2 非法登录341

7.1.3 对策341

停止运行不需要的软件342

定期实施漏洞防范措施342

选定软件时确认软件的升级状况342

确定打补丁方式343

关注各种漏洞相关信息344

确认漏洞后调查补丁状况以及防范对策、并制定对应计划344

执行漏洞对应计划345

对不需要对外公开的端口或服务加以访问限制346

通过端口扫描确认各端口服务状态347

提高认证强度348

7.2 防范伪装攻击的对策349

7.2.1 网络伪装的手段349

针对DNS服务器的攻击349

专栏 VISA域名问题350

ARP欺骗攻击350

7.2.2 钓鱼攻击350

7.2.3 Web网站的伪装攻击对策351

网络层的对策351

同一网段内不放置可能存在漏洞的服务器351

强化DNS运维351

引入SSL/TLS352

专栏 免费的数字证书354

使用便于记忆的域名354

7.3 防范网络监听、篡改的对策355

7.3.1 网络监听、篡改的途径355

通过无线网进行监听、篡改355

利用交换机端口镜像355

利用代理服务器355

伪装成DHCP服务器355

使用ARP欺骗攻击和DNS缓存污染攻击(DNS cache poisoning)355

7.3.2 中间人攻击356

使用Fiddler模拟中间人攻击356

专栏 请不要手动安装证书358

7.3.3 对策359

使用SSL时的注意事项359

专栏 SSL认证标签360

7.4 防范恶意软件的对策361

7.4.1 什么是Web网站的恶意软件对策361

7.4.2 恶意软件的感染途径361

7.4.3 Web网站恶意软件防范对策概要362

7.4.4 如何确保服务器不被恶意软件感染363

探讨是否需要制定针对恶意软件的防范措施363

制定病毒防范政策并向用户公开363

使用防病毒软件364

专栏 Web网站的防病毒对策和Gumblar的关系365

7.5 总结366

第8章 开发安全的Web应用所需要的管理367

8.1 开发管理中的安全对策概要368

8.2 开发体制369

开发标准的制定369

教育培训369

8.3 开发过程371

8.3.1 规划阶段的注意事项371

8.3.2 招标时的注意事项371

专栏 谁应该对安全漏洞负责372

8.3.3 需求分析时的注意事项372

8.3.4概要设计的推进方法373

8.3.5 详细设计和编码阶段的注意事项374

8.3.6 安全性测试的重要性及其方法374

8.3.7 Web健康诊断基准374

8.3.8 承包方测试376

8.3.9 发包方测试(验收)376

8.3.10 运维阶段的注意事项377

8.4 总结378

热门推荐