https连接是否可以保护cookie并防止XSS攻击。我有一个简单的博客,允许用户输入JavaScript代码作为输入。我想允许用户输入Javascript,同时仍然阻止XSS攻击和cookie窃取。 https是否有助于保护cookie。我只发现很少有网站谈论这个,但仍然有点不清楚。
答案 0 :(得分:7)
HTTPS可以防止中间人攻击,而不是XSS。不幸的是,会话cookie单独使用时不安全,可以请求带有HTTP的页面,然后相同的cookie将不受保护地发送。
要确保仅在HTTPS连接上发送会话cookie,您可以在开始会话之前使用函数session_set_cookie_params():
session_set_cookie_params(0, '/', '', true, true);
session_start();
请注意第一个true
,这意味着该Cookie只会发送到HTTPS页面。第二个true
告诉浏览器,JavaScript不能访问会话cookie,如果正确完成,则取决于浏览器。
使网站更安全的另一个好方法是,仅使用会话cookie来维护会话,并使用第二个cookie来处理身份验证。如果你有兴趣,我可以提供一个例子。
答案 1 :(得分:4)
HTTP协议(HTTPS或HTTP)对XSS没有帮助或者确实有任何关系。您需要添加预防措施,并在将javascript输出到客户端时要小心。
答案 2 :(得分:1)
一旦您允许某人在您的网站上动态存储和执行任意JavaScript,他们就可以访问您希望他们独自留下的许多内容。至少,他们可以劫持您的PHP会话ID(毕竟他们可以访问您的cookie),然后使用Ajax将其转发到某个远程服务器。一旦他们有了这个,他们就可以为你的用户做各种各样的废话。
如果你让让他们添加自己的JavaScript,我建议你专门禁用所有Ajax功能(XMLHTTPRequest = function(){}
在大多数浏览器上很容易阻止所有Ajax,但你可能需要调查IE需要什么(我不知道ActiveXObject = function(){}
会做什么...))。不幸的是,如果你有任何期望使用它,你就无法阻止访问cookie(即如果你有会话),所以你需要找到一些其他的解决方法。
答案 3 :(得分:1)
如果您希望用户能够输入JavaScript 代码,但未对其进行解析,请通过htmlspecialchars运行它。 如果你希望他们能够执行代码,那么不,HTTPS将无济于事,你将需要解析代码并删除任何不良代码。