2.5. 跨站请求伪造 跨站请求伪造(CSRF)是一种允许攻击者通过受害者发送任意HTTP请求的一类攻击方法。此处所指的受害者是一个不知情的同谋,所有的伪造请求都由他发起,而不是攻击者。这样,很你就很难确定哪些请求是属于跨站请求伪造攻击。事实上,如果没有对跨站请求伪造攻击进行特意防范的话,你的应用很有可能是有漏洞的。 请看下面一个简单的应用,它允许用户购买钢笔或铅笔。
制造一个欺骗表单几乎与假造一个URL一样简单。毕竟,表单的提交只是浏览器发出的一个HTTP请求而已。请求的部分格式取决于表单,某些请求中的数据来自于用户。 大多数表单用一个相对URL地址来指定action属性: 当表单提交时,浏览器会请求action中指定的URL,同时它使用当前的URL地址来定位相对URL。例如,如果之前的表单是对http://example.org/path/...
2.7. HTTP请求欺骗 一个比欺骗表单更高级和复杂的攻击方式是HTTP请求欺骗。这给了攻击者完全的控制权与灵活性,它进一步证明了不能盲目信任用户提交的任何数据。 为了演示这是如何进行的,请看下面位于http://example.org/form.php的表单: CODE: Please select a color: 如果用户选择了Red并点击了Se...
本章主要讨论会话和有状态的Web应用的内在风险。你会首先学习状态、cookies、与会话;然后我会讨论关于cookie盗窃、会话数据暴露、会话固定、及会话劫持的问题及防范它们的方法。 正如大家知道的,HTTP是一种无状态的协议。这说明了两个HTTP请求之间缺乏联系。由于协议中未提供任何让客户端标识自己的方法,因此服务器也就无法区分客户端。 虽然HTTP无状态的特性还是有一些好处,毕竟维护状...
PHP的作用常常是沟通各种数据源及用户的桥梁。事实上,有些人认为PHP更像是一个平台而不是一个编程语言。基于这些原因,PHP频繁用于与数据库的交流。 PHP可以很好的胜任这个任务,其原因特别是由于它能与很多种数据库连接。下面列举了PHP支持的小部分数据库: DB2 ODBC SQLite InterBase Oracle Sybase MySQL PostgreSQL DBM 与任何...
随着PHP项目的增大,软件设计与组织在代码的可维护性上起着越来越重要的作用。尽管对于什么是最好的编程方式众说纷纭(关于面向对象优点的争论常常发生),但基本上每个开发者会理解和欣赏模块化设计的价值。 本章说明了使用包含时会面临的安全问题。脚本中include或require的文件把你的应用分成了逻辑上分离的两部分。我还会着重强调和纠正一些常见的误解,特别是有关于如何编程的问题。 小提示 ...
本章主要讨论伴随着文件与shell命令的使用所产生的风险。PHP有大量的文件系统函数,与直接执行shell命令只有少量的区别。在本章中,我会着重强调开发者在使用这些功能时常犯的错误。 总的来说,伴随这些功能所产生的风险类似于很多本书已提及的风险——使用被污染数据具有灾难性的副作用。尽管漏洞是不同的,但是用来对付它们的方法都是你已学过的方法。 6.1. 文件系统跨越 无论你用什么方法使...
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号