第三章、Web应用程序技术(Web功能)(二)
服务器端要接受用户输入,并向用户返回结果。所以他必须提供一个==客户端用户界面==。因为用户通过浏览器访问,所以用户界面的技术是基于浏览器的。
HTML
超文本标记语言,是web界面的核心技术。是描述浏览器显示的文档结构的基于标签的语言。
超链接
超链接驱动服务器与客户的通信。通常超链接包含预先的请求参数。这些些参数是服务器自动插入而无需用户操作。
如下:
<a href="/news/showStory?newsid=8236748&lang=zh">Sale now on!</a>
//当用户单击此超链接时,浏览器会提出以下请求
//GET "/news/showStory/?newid=8236748&lang=zh" HTTP/1.1
HOST:
服务器收到newid和lang这两个参数
表单
表单是一种常见的前后端通信方式。
例如:
<form action="/login.php?app=qwer" method="post">
username:<input type="text" name="username"><br>
password:<input type="password name="password"">
<input type="hidden" name="redir" value="/secure/home.php">
<input type="submit" name="submit value=""login">
</form>
当点击“提交”按钮时,浏览器将提出以下请求:
POST /login.php?app=qwer HTTP/1.1
HOST:
Content-Type:
Content-Length:
Cookie:
username=admin&password=admin&redir=/login.php&submit=login
//1.这个请求中包含POST请求方法,浏览器用POST提交表单,并将表单数据存入消息主体
//2.隐藏参数redir和提交参数submit也一起提交
//3.URL中包含预先设定的参数app用于控制处理过程
//4.请求中的cookie参数也用于控制处理数据过程
JavaScript
客户端不仅用来提交用户数据,也用来用户处理。
这样的优点:
- 提高应用程序性能:服务端处理变少了
- 提高可用性:动态调整用户界面,无需传送全新HTML页面
JavaScript执行以下任务:
- 向服务器提交前确认用户的数据
- 根据用户操作动态修改页面
- 查询并更新浏览器内的文档对象模型(Document Object Model,DOM),控制浏览器行为
AJAX可以从HTML页面发布动态HTTP请求,与浏览器交换数据并更新Web页面。 AJAX执行不当会有漏洞从而受到攻击。
厚客户组件
用于改善JavaScript功能
- Java Applet
- ActiveX控件
- Shockwave Flash 对象
状态与会话
- 服务器与客户端交换数据
- 为了一些功能,例如购物程序需要个人的支付信息,所以需要追踪每名用户的交互状态
- 为了实现这种功能,服务器上保存一组数据结构:会话,当用户操作时,服务器更新在会话中的相关信息并返回
- 有些状态信息保存在客户端。所以交换状态信息时容易被攻击者篡改。ASP.NET用ViewState这种隐藏字段来保护状态信息的安全。
- 因为HTTP请求本身没有状态,为了正确处理数据,应用程序需要某种方法确认用户身份。令牌就是一种标识。通常令牌包含在cookie中。
会话处理中有漏洞,后续会有描述