美文网首页
HTML表单学习

HTML表单学习

作者: 我不信这样也重名 | 来源:发表于2018-11-30 10:24 被阅读0次

一、post与get方式提交数据的区别

  1. post是向服务器传送数据,get是从服务器获取数据
  2. post是通过HTTPpost机制,将表单内各
    个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址,用户看不到这个过程,安全性较高;get是把参数数据
    队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到,安全性很低。
  3. post传送的数据量较大,get传送的数据量很小
  4. 对于post,服务器端用Request.Form获取提交的数据;对于get,则用Request.QueryString获取变量。

二、name在input里的作用

  1. 作为可与服务器交互数据的HTML元素的服务器端的标示:比如input、select、textarea、和button等。我们可以在服务器端根据其name,通过Request.Params取得元素提交的值。
  2. 对元素进行分组:HTML元素Input type='radio'分组,我们知道radio button控件在同一个分组类,check操作是mutex的,同一时间只能选中一个radio,这个分组就是根据相同的Name属性来实现的。
  3. 建立页面中的锚点:<a href="URL">link</a>是获得一个页面超级链接,如果不用href属性,而改用name,如:<a name="PageBottom"></a>,我们就获得了一个页面锚点。
  4. 作为对象的Identity:如Applet、Object、Embed等元素。比如在Applet对象实例中,我们将使用其Name来引用该对象。
  5. 定义IMG的热点区域:在IMG元素和MAP元素之间关联的时候,如果要定义IMG的热点区域,需要使用其属性usemap,使usemap="#name"(被关联的MAP元素的name)。
  6. 某些特定元素的属性:例如为Object定义参数<PARAM NAME = "appletParameter" VALUE = "value">或Meta中<META NAME = "Author" CONTENT = "Dave Raggett">。

三、radio分组方式

对表单中的单选框radio,name属性相同的是一组。如以下代码:

<form>
    <input type="radio" name="nation" value="China"> 中国 <br>
    <input type="radio" name="nation" value="Japan"> 日本 <br>
   <input type="radio" name="city" value="Beijing"> 北京 <br>
   <input type="radio" name="city" value="Tokyo"> 东京
</form>  

其中name属性为nation的是一组,name属性为city的是一组。


四、placeholder 属性的作用

placeholder 属性规定可描述输入字段预期值的简短的提示信息(比如:一个样本值或者预期格式的短描述)。
该提示会在用户输入值之前显示在输入字段中


五、CSRF 攻击及其防范

CSRF攻击是什么

CSRF(Cross-site request forgery)也被称为 one-click attack或者 session riding,中文全称跨站请求伪造。一般来说,攻击者通过伪造用户的浏览器的请求,向一个用户自己曾经认证访问过的网站发送出去,使目标网站接收并误以为是用户的真实操作而去执行命令。常用于盗取账号、转账、发送虚假消息等。攻击者利用网站对请求的验证漏洞而实现这样的攻击行为,网站能够确认请求来源于用户的浏览器,却不能验证请求是否源于用户的真实意愿下的操作行为。

如何防范CSRF攻击

  1. 验证 HTTP Referer 字段

HTTP头中的Referer字段记录了该 HTTP 请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站,而如果黑客要对其实施 CSRF
攻击,他一般只能在他自己的网站构造请求。因此,可以通过验证Referer值来防御CSRF 攻击。

  1. 使用验证码

关键操作页面加上验证码,后台收到请求后通过判断验证码可以防御CSRF。但这种方法对用户不太友好。

  1. 在请求地址中添加token并验证

CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于cookie中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的cookie 来通过安全验证。要抵御 CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中。可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有token或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。这种方法要比检查 Referer 要安全一些,token 可以在用户登陆后产生并放于session之中,然后在每次请求时把token 从 session 中拿出,与请求中的 token 进行比对,但这种方法的难点在于如何把 token 以参数的形式加入请求。
对于 GET 请求,token 将附在请求地址之后,这样 URL 就变成 [http://url?csrftoken=tokenvalue](https://link.jianshu.com?t=http://url?csrftoken=tokenvalue)

而对于 POST 请求来说,要在 form 的最后加上 <input type="hidden" name="csrftoken" value="tokenvalue"/>,这样就把token以参数的形式加入请求了。

  1. 在HTTP 头中自定义属性并验证

这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。这样解决了上种方法在请求中加入 token 的不便,同时,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心 token 会透过 Referer 泄露到其他网站中去。


六、type=hidden隐藏域的作用

  1. 收集或发送信息,以利于被处理表单的程序所使用。浏览者单击发送按钮发送表单的时候,隐藏域的信息也被一起发送到服务器。
  2. 确定用户身份。如sessionkey等等。此昂比使用cookie实现,隐藏域简单明了。且不会有浏览器不支持,用户禁用cookie等弊端。
  3. 确定用户提交的按钮。对于多个提交按钮的表单,我们可以写一个隐藏域,然后在每一个按钮处加上 onclick="document.form.command.value="xx""然后我们接到数据后先检查command的值就会知道用户是按的那个按钮提交上来的。
  4. 对于多个form的网页,可以在form中添加隐藏域来使它们联系起来
  5. javascript不支持全局变量,必须用全局变量时,可以把值先存在隐藏域里,使其不会丢失
    6.当按一个按钮弹出四个小窗口,当点击其中的一个小窗口时其他三个自动关闭.可是IE不支持小窗口相互调用,所以只有在父窗口写隐藏域,当小窗口看到那个隐藏域的值是close时就自己关掉。

七、label标签

label标签的作用

label标签用来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。

label标签的使用

label标签只要有以下两种用法:

<label for = "Name">Number:</label>
<input type="text" name="Name" id="Name" />
<label>Data:<input type="text" name="B" /><label>

八、http get长度问题

http的限制长度取决于所使用的服务器和客户端(还取决于服务器或客户端可能正在使用的代理服务器)。
大部分的Web服务器的限制是8192 bytes(8KB),通常可在服务器配置中进行设置。而对于客户端,HTTP1.1规范甚至对此作出了警告,以下是章节3.2.1的摘录:

注意:对于长度超过255 bytes的URI,服务器应谨慎对待,因为超过这个长度,一些较老的客户端或代理服务器可能无法合理支持。

MSIE与Safari的长度限制大约为2KB,Opera约为4KB,Firefox约为8KB。因此,我们可以假定8KB可能是最大长度,2KB是服务器端可支持度更高的长度,而255 bytes是假设采用整个URL时最安全的长度。
如果在浏览器或服务器中长度超出限制,大多数情况都会在不发出任何警告时截断超出限制部分的字符。而某些服务器则可能会发出HTTP 414错误。若需要发送大量数据,最好使用post命令而不是get命令。前者的限制要宽得多,但相比客户端,它更依赖于所使用的服务器。通常一般的Web服务器都允许大约高达2GB的数据,这在服务器设置中也是可以配置的。当超出post限制时,一般的服务器将会显示特定服务服务/异常,通常为HTTP 500错误。

相关文章

  • 2019-10-24 表单标签

    今天学习了html表单 HTML表单(

    标签) 属性: 1 action:决定表单提交的地...

  • HTML表单学习

    一、post与get方式提交数据的区别 post是向服务器传送数据,get是从服务器获取数据。 post是通过HT...

  • 使表单结构化

    引言 在学习过第一个HTML表单后,我们将详细讲述构成一个表单的不同部分。HTML表单的灵活性使它成为HTML文档...

  • HTML表单的简单用法

    HTML表单的简单用法:HTML表单用于搜集不同类型的用户输入。 元素定义HTML表单。HTML表单包含表单元素。...

  • 简单介绍 HTML 表单的用法

    HTML 表单用于收集用户输入, 元素定义 HTML 表单。HTML 表单包含表单元素,表单元素指的是不同类型的...

  • HTML表单的用法

    html表单用于搜集不同类型的用户输入。

    元素 form元素定义html表单 HTML 表单包含表单元...

  • HTML学习笔记(四)

    一:HTML 表单 HTML 表单用于搜集不同类型的用户输入。 元素 HTML 表单用于收集用户输入。 HTML ...

  • HTML 表单的用法

    HTML 表单用于搜集不同类型的用户输入 元素定义 HTML 表单: 所有属性如下 HTML 表单包含表单元素表...

  • HTML5学习笔记之表单标签

    HTML5学习笔记之表单标签 其他HTML5相关文章 HTML5学习笔记之HTML5基本介绍 HTML5学习笔记之...

  • 08-表单

    本节案例 表单的作用 HTML 表单用于收集用户输入。 表单form 元素定义 HTML 表单,里面需要有各种表单...

网友评论

      本文标题:HTML表单学习

      本文链接:https://www.haomeiwen.com/subject/aypccqtx.html