Get跟post 到底有什么区别?到底那个更安全

Get和post 到底有什么区别?到底那个更安全?

        在表单被提交到服务器的时候,有两种方式,get和post。那么什么叫get提交,什么叫post提交,他们有什么区别呢?那个安全性更高呢?以及如何使用它们。下边就给大家简单的介绍一下。

共同点:

    Get提交和post提交都是将数据发送到服务器端,只是他们的提交的方式不一样!

区别:

    get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

    GET请求提交的数据有长度限制,POST请求没有限制。

    GET方式引文数据较少,所以效率较高。而Post的效率则比较低!

    GET请求返回的内容可以被浏览器缓存起来。而每次提交的POST,浏览器在你按下F5的时候会跳出确认框,浏览器不会缓存POST请求返回的内容。

    GET对数据进行查询,POST主要对数据进行增删改!简单说,GET是只读,POST是写。

    get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

    Get提交浏览器会缓存服务器发送回来的信息。而post提交则不会被缓存!

    Get提交的网页能被存为书签,post方式不能!

    这些区别也是我们经常说的,但是在这里有一个误区,其实Http Get方法提交的数据大小长度并没有限制,而是IE浏览器本身对地址栏URL长度有最大长度限制:2083字符。详情请参见:http://support.microsoft.com/kb/208427/zh-cnMSDN权威。

安全性:

    Get提交,将要提交的内容方法哦URL后边使用?进行连接。这种提交方式可能让一些用户看到一些保密信息,比如用户名,密码等信息。带来的一定的安全隐患。而post提交方式,是将请求的信息放到数据报中(请求体),其他人职能看到URL的信息,而不能看到别的信息。从而提高了安全性!

    这就是我们最通常的认识。一天偶然看到了一篇博客,里边提到get方式也是安全的。因为我们提交的敏感信息,一般都是进行不可逆加密的!所以得到了页没有什么。他们安全性我们只考虑了用户而没有考虑服务器,post方式提交的数据的长度不受限制,所以黑客可以向服务器提交大量的数据,致使服务器忙于处理这些数据,而无暇处理用户的正常请求,到处服务器瘫痪!当我们使用get 提交的时候,不要提交一些敏感数据。

Get和post的使用:

以下为引用的内容:
<!--两个Form只有Method属性不同-->
<FORM ACTION=“getpost.php” METHOD=“get”>
<INPUT TYPE=“text” NAME=“Text” VALUE=“Hello World”></INPUT>
<INPUT TYPE=“submit” VALUE=“Method=Get”></INPUT>
</FORM>
<BR>
<FORM ACTION=“getpost.php” METHOD=“post”>
<INPUT TYPE=“text” NAME=“Text” VALUE=“Hello World”></INPUT>
<INPUT TYPE=“submit” VALUE=“Method=Post”></INPUT>
</FORM>
<BR>
<BR>
<? If Request.QueryString(“Text”) <> ““ Then ?>
通过get方法传递来的字符串是: “<B><?= Request.QueryString(“Text”) ?></B>“<BR>
<? End If ?>
<? If Request.Form(“Text”) <> ““ Then ?>
通过Post方法传递来的字符串是: “<B><?= Request.Form(“Text”) ?></B>“<BR>
<? End If ?>

说明

 把上面的代码保存为getpost.asp,然后运行,首先测试post方法,这时候,浏览器的url并没有什么变化,返回的结果是:

 通过Post方法传递来的字符串是: "Hello World"

 然后测试用get方法提交,请注意,浏览器的url变成了:

 http://localhost/general/form/getpost.php?Text=Hello+World

 而返回的结果是:

 通过get方法传递来的字符串是: "Hello World"

 最后再通过post方法提交,浏览器的url还是:

 http://localhost/general/form/getpost.php?Text=Hello+World

 而返回的结果变成:

 通过get方法传递来的字符串是: "Hello World"

 通过Post方法传递来的字符串是: "Hello World"

          

    这两种提交方式,各有各的用途,看我们想要的是什么,然后在去选择。 希望这篇文章能对大家有所帮助!



1楼lfmilaoshi昨天 21:29
有比较才能有鉴别,在比较中,去分析,在比较中去学习,在比较中得到,更深一层的理解。