如何將我的PHP apps
中的Cookie設置爲HttpOnly cookies
?如何在PHP中設置使用HttpOnly Cookie
回答
- 對於你的cookies,看到這個答案。
- 對於PHP自己的會話cookie(
PHPSESSID
,默認情況下),看@richie's answer
的setcookie()
和setrawcookie()
功能,推出了httponly
參數,早在PHP 5.2.0的黑暗時代,使得這個漂亮並且容易。只需將第七參數設置爲true,按語法
簡化爲簡潔
setcookie( $name, $value, $expire, $path, $domain, $secure, $httponly)
setrawcookie($name, $value, $expire, $path, $domain, $secure, $httponly)
功能語法要保留默認設置參數輸入NULL
。 您可能還想考慮是否應該設置secure
參數。
也可以使用舊的,低級別header()
功能:
header("Set-Cookie: name=value; httpOnly");
說明這裏從伊利亞...... 5.2只雖然
httpOnly cookie flag support in PHP 5.2
正如該文章中所述,您可以設置自己的頭在PHP
header("Set-Cookie: hidden=value; httpOnly");
<?php
//None HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, FALSE);
//HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
?>
的早期版本Source
您可以指定它在設置cookie的功能see the php manual
setcookie('Foo','Bar',0,'/', 'www.sample.com' , FALSE, TRUE);
要知道,僅Http不會停止跨站點腳本;相反,它會中和一種可能的攻擊,並且目前只能在IE上進行攻擊(FireFox在XmlHttpRequest中暴露HttpOnly cookie,而Safari根本沒有遵守)。無論如何,只要打開HttpOnly,但不要放棄一小時的輸出過濾和模糊測試。
自08年以來,這種情況可能已經發生了變化。 這裏是一個更新/更新列表:http://stackoverflow.com/questions/528405/which-browsers-do-support-httponly-cookies – Kzqai 2012-11-19 16:59:09
我真的想刪除我的downvote。 – 2016-12-07 19:38:14
請注意,PHP會話cookie默認情況下不使用httponly
。
爲了做到這一點:
$sess_name = session_name();
if (session_start()) {
setcookie($sess_name, session_id(), null, '/', null, null, true);
}
這裏有幾個注意事項:
- 你有
session_start()
- 之前調用
session_name()
這也 設置的默認路徑爲「/ ',其中 是Opera所必需的,但其中的PHP 會話cookie默認不會執行 。
有關Apache的PHP自己的會話cookie:
添加到您的Apache配置或.htaccess
<IfModule php5_module>
php_flag session.cookie_httponly on
</IfModule>
這也可以在腳本中,只要它是session_start()
之前稱爲設置。
ini_set('session.cookie_httponly', 1);
您可以在頭文件中使用它。
// setup session enviroment
ini_set('session.cookie_httponly',1);
ini_set('session.use_only_cookies',1);
這樣所有未來的cookies都會使用httponly。
的的php_flag命令的正確的語法是
php_flag session.cookie_httponly On
並且要注意,只是第一個答案從服務器設置cookie並在這裏(例如,你可以看到「僅Http」指令。因此,對於測試中刪除Cookie從瀏覽器的每個測試請求。
- 1. 如何在Django中設置HttpOnly cookie?
- 2. 如何設置Cookie HTTPOnly標誌?
- 3. 在JSESSIONID Cookie中設置httponly(Java EE 5)
- 4. HttpOnly cookie - 無法設置
- 5. 如何使用javascript設置cookie的HttpOnly標誌?
- 6. 如何在瀏覽器中檢查cookie設置爲httponly
- 7. 如何將會話cookie的HttpOnly設置設置爲false?
- 8. 爲經典ASP會話Cookie設置HTTPONLY
- 9. HTTPOnly將cookie過期設置爲會話
- 10. 如何在Rails 2.1的會話cookie上設置HttpOnly?
- 11. 如何在Ruby on Rails上的cookie上設置HttpOnly標誌
- 12. 如何從瀏覽器中刪除JSESSIONID cookie,並使用HttpOnly標誌設置
- 13. 如何在PHP中爲域設置Cookie
- 14. 如何在php中設置cookie?
- 15. 在web.xml中設置'HttpOnly'和'Secure'
- 16. Owin Middleware是否支持在HttpOnly Cookie中設置JWT令牌?
- 17. 在php中設置cookie
- 18. 如何在tomcat/java webapps中配置HttpOnly cookie?
- 19. 如何使用nginx設置HttpOnly響應頭?
- 20. 如何在php中使用smarty模板設置Cookie?
- 21. Jetty httpOnly Cookie配置像在Tomcat上
- 22. 如何從Cookie中刪除HttpOnly屬性
- 23. 如何在設置iframe.src時使用cookie添加cookie(使用jquery)?
- 24. 在清漆4上設置Cookie上的HTTPOnly標誌
- 25. 爲子文件夾/目錄中的所有Cookie設置HttpOnly
- 26. yii cookies設置httpOnly
- 27. 我如何在JSF/Richfaces上設置HttpOnly標誌
- 28. 設置的HttpOnly在socket.io回調
- 29. 編輯Cookie HttpOnly值
- 30. c#獲取httponly cookie
http://stackoverflow.com/questions/528405/which-browsers-do-support-httponly-cookies有瀏覽器的支持信息。 – Kzqai 2012-11-19 17:00:50
@Tchalvak不,目前的答案仍然權威。自2008年以來,沒有任何改變關於PHP中的僅HTTP cookie設置_哪些瀏覽器支持僅HTTP cookie_是不同的問題,用不同的答案。 – lanzz 2012-11-22 10:11:34
您可以使用`$ cookie-> setHttpOnly(true);`https://github.com/delight-im/PHP-Cookie – caw 2016-07-12 23:44:32