Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html GET或POST是否比另一个更安全?_Html_Security_Http - Fatal编程技术网

Html GET或POST是否比另一个更安全?

Html GET或POST是否比另一个更安全?,html,security,http,Html,Security,Http,当比较HTTP GET和HTTP POST时,从安全性角度看有什么区别?其中一种选择天生比另一种更安全吗?若然,原因为何 我意识到这篇文章并没有公开URL上的信息,但这里面有什么真正的价值吗?或者这仅仅是因为晦涩难懂而带来的安全性?当安全是一个问题时,有没有什么理由让我更喜欢发表文章 编辑: 通过HTTPS,POST数据是经过编码的,但是URL可以被第三方嗅探到吗?此外,我正在处理JSP;当使用JSP或类似的框架时,最好的做法是避免将敏感数据放在POST或GET中,而是使用服务器端代码来处理敏感

当比较HTTP GET和HTTP POST时,从安全性角度看有什么区别?其中一种选择天生比另一种更安全吗?若然,原因为何

我意识到这篇文章并没有公开URL上的信息,但这里面有什么真正的价值吗?或者这仅仅是因为晦涩难懂而带来的安全性?当安全是一个问题时,有没有什么理由让我更喜欢发表文章

编辑:

通过HTTPS,POST数据是经过编码的,但是URL可以被第三方嗅探到吗?此外,我正在处理JSP;当使用JSP或类似的框架时,最好的做法是避免将敏感数据放在POST或GET中,而是使用服务器端代码来处理敏感信息,这是公平的吗?

更改POST请求更难(它需要比编辑查询字符串更大的努力)Edit:换句话说,这只是默默无闻的安全性,几乎不是这样。

就安全性而言,它们本质上是相同的。虽然POST确实没有通过URL公开信息,但它在客户端和服务器之间的实际网络通信中公开的信息与GET一样多。如果您需要传递敏感信息,第一道防线将是使用安全HTTP进行传递

GET或query string POST对于为特定项目添加书签或帮助搜索引擎优化和索引项目所需的信息非常有用


POST适用于用于提交一次性数据的标准表单。我不会使用GET发布实际表单,除非在搜索表单中,您希望允许用户将查询保存在书签中,或者类似的内容

没有增加安全性。

Post数据不会显示在历史记录和/或日志文件中,但如果数据应保持安全,则需要SSL。

否则,任何嗅探电线的人都可以读取您的数据。

我通常的选择方法如下:

  • 获取以后将通过URL检索的项目
    • 例如,Search应该是GET,以便以后可以执行Search.php?s=XXX
  • 为将发送的项目发布
    • 这是相对不可见的,很难获取和发送,但数据仍然可以通过cURL发送

即使
POST
GET
相比没有真正的安全优势,对于登录表单或具有相对敏感信息的任何其他表单,请确保使用
POST
作为:

  • 信息
    POST
    ed将不会保存在用户的历史记录中
  • 表单中发送的敏感信息(密码等)稍后将在URL栏中不可见(通过使用
    GET
    ,它将在历史记录和URL栏中可见)
  • 而且,
    GET
    对数据有理论上的限制<代码>发布没有


    对于真正敏感的信息,请确保使用
    SSL
    HTTPS

    GET对任何人都可见(即使是现在你肩上的那一个),并且保存在缓存中,因此使用post的安全性较低,顺便说一句,没有一些加密例程的post是不确定的,为了安全起见,你必须使用SSL(HTTPS)

    许多人采用一种约定(Ross提到)GET请求只检索数据,不修改服务器上的任何数据,POST请求用于所有数据修改。虽然一个请求本身并不比另一个更安全,但如果遵循此约定,则可以应用交叉安全逻辑(例如,只有拥有帐户的人才能修改数据,因此未经验证的帖子将被拒绝)。

    GET和POST两者都不是天生的“更安全”,就像传真和电话都不是“更安全”一样提供了各种HTTP方法,以便您可以选择最适合您试图解决的问题的方法。GET更适合查询,而POST更适合“操作”查询,但如果您不了解所维护的应用程序的安全体系结构,那么您也可以轻松地使用这些查询


    如果您阅读了,可能最好能全面了解get和POST最初的含义。

    这与安全性无关,但是……浏览器不缓存POST请求。

    get和POST之间的区别不应该从安全性的角度来看待,而应该从它们对se的意图来看待GET不应更改服务器上的数据(至少在日志中除外),但POST可以创建新资源

    Nice代理不会缓存POST数据,但它们可能会缓存从URL获取的数据,因此您可以说POST应该更安全。但POST数据仍将可用于性能不佳的代理

    正如许多答案中提到的,唯一确定的赌注是通过SSL


    但一定要确保GET方法不会提交任何更改,例如删除数据库行等。

    这两种方法都不会神奇地赋予请求安全性,但是GET会产生一些副作用,通常会阻止请求的安全性

    “获取URL”会显示在浏览器历史记录和Web服务器日志中。因此,它们不应用于登录表单和信用卡号等内容

    然而,仅仅发布数据也不能保证数据的安全性。为此,您需要SSL。当通过HTTP使用时,GET和POST都会通过网络以明文形式发送数据

    发布数据还有其他很好的理由,比如可以提交无限量的数据,或者对临时用户隐藏参数


    缺点是,用户无法将通过POST发送的查询结果添加书签。为此,您需要获取。

    我不打算重复所有其他答案,但有一个方面我还没有完成
    <html>
    <body>
    <form action="http://example.com" method="get">
        User: <input type="text" name="username" /><br/>
        Password: <input type="password" name="password" /><br/>
        <input type="hidden" name="extra" value="lolcatz" />
        <input type="submit"/>
    </form>
    </body>
    </html>
    
     GET /?username=swordfish&password=hunter2&extra=lolcatz HTTP/1.1
     Host: example.com
     Connection: keep-alive
     Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/ [...truncated]
     User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) [...truncated]
     Accept-Encoding: gzip,deflate,sdch
     Accept-Language: en-US,en;q=0.8
     Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
    
     POST / HTTP/1.1
     Host: example.com
     Connection: keep-alive
     Content-Length: 49
     Cache-Control: max-age=0
     Origin: null
     Content-Type: application/x-www-form-urlencoded
     Accept: application/xml,application/xhtml+xml,text/ [...truncated]
     User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; [...truncated]
     Accept-Encoding: gzip,deflate,sdch
     Accept-Language: en-US,en;q=0.8
     Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
    
     username=swordfish&password=hunter2&extra=lolcatz
    
    q5XQP%RWCd2u#o/T9oiOyR2_YO?yo/3#tR_G7 2_RO8w?FoaObi)
    oXpB_y?oO4q?`2o?O4G5D12Aovo?C@?/P/oOEQC5v?vai /%0Odo
    QVw#6eoGXBF_o?/u0_F!_1a0A?Q b%TFyS@Or1SR/O/o/_@5o&_o
    9q1/?q$7yOAXOD5sc$H`BECo1w/`4?)f!%geOOF/!/#Of_f&AEI#
    yvv/wu_b5?/o d9O?VOVOFHwRO/pO/OSv_/8/9o6b0FGOH61O?ti
    /i7b?!_o8u%RS/Doai%/Be/d4$0sv_%YD2_/EOAO/C?vv/%X!T?R
    _o_2yoBP)orw7H_yQsXOhoVUo49itare#cA?/c)I7R?YCsg ??c'
    (_!(0u)o4eIis/S8Oo8_BDueC?1uUO%ooOI_o8WaoO/ x?B?oO@&
    Pw?os9Od!c?/$3bWWeIrd_?( `P_C?7_g5O(ob(go?&/ooRxR'u/
    T/yO3dS&??hIOB/?/OI?$oH2_?c_?OsD//0/_s%r
    
    rV/O8ow1pc`?058/8OS_Qy/$7oSsU'qoo#vCbOO`vt?yFo_?EYif)
    43`I/WOP_8oH0%3OqP_h/cBO&24?'?o_4`scooPSOVWYSV?H?pV!i
    ?78cU!_b5h'/b2coWD?/43Tu?153pI/9?R8!_Od"(//O_a#t8x?__
    bb3D?05Dh/PrS6_/&5p@V f $)/xvxfgO'q@y&e&S0rB3D/Y_/fO?
    _'woRbOV?_!yxSOdwo1G1?8d_p?4fo81VS3sAOvO/Db/br)f4fOxt
    _Qs3EO/?2O/TOo_8p82FOt/hO?X_P3o"OVQO_?Ww_dr"'DxHwo//P
    oEfGtt/_o)5RgoGqui&AXEq/oXv&//?%/6_?/x_OTgOEE%v (u(?/
    t7DX1O8oD?fVObiooi'8)so?o??`o"FyVOByY_ Supo? /'i?Oi"4
    tr'9/o_7too7q?c2Pv
    
    http://www.example.com/api?apikey=abcdef123456&action=deleteCategory&id=1