繁体   English   中英

HTTPS是否加密POST数据?

[英]Does HTTPS make POST data encrypted?

我是编程世界的新手,我已经学习了很多关于使用HTML-AJAX-PHP-MySQL的基本CRUD类型Web应用程序。 我一直在学习编码作为一种爱好,因此只使用了WAMP / XAMP设置(localhost)。 我现在想冒险使用VPS并学习设置它并最终开辟一个供公众使用的新项目。

我注意到每当我使用AJAX或甚至常规POST将表单数据发送到我的PHP文件时,如果我打开Chrome调试器,然后转到“网络”,我可以看到正在发送的数据,以及后端PHP文件它正在发送数据。

如果用户可以看到这个,他们可以拦截这些数据,修改它,并将它发送到同一个后端PHP文件吗? 如果他们创建自己的简单HTML页面并将POST数据发送到我的PHP后端文件,它会起作用吗?

如果是这样,我该如何避免这种情况? 我一直在阅读使用HTTPS,但我仍然感到困惑。 使用HTTPS意味着我必须以任何方式改变我的代码吗?

浏览器显然会知道它正在发送什么数据,它将在调试器中显示它。 HTTPS加密传输中的数据,远程服务器将在收到后对其进行解密; 即它可以防止中间的任何第三方能够读取或操纵数据。

这可能会让您感到震惊(或许不是),但与服务器的通信只能通过HTTP(S)进行。 这是一个简单的文本协议。 任何人都可以随时随地向您的服务器发送任意HTTP请求。 HTTPS加密与否。 如果您担心有人操纵通过浏览器调试工具发送的数据......您的担忧完全是错误的。 有许多更简单的方法可以将任意精心设计的HTTP请求发送到您的服务器,甚至无需访问您的站点。

您的服务器只能依赖它收到的数据,并且必须根据自己的优点严格验证给定的数据。 试图以任何方式锁定客户端都是徒劳的。

这甚至比这更简单。 无论您是使用GET还是POST来传输参数,HTTP请求都会由用户的客户端发送到您的服务器,无论是Web浏览器,telnet还是其他任何东西。 用户可以简单地知道这些POST参数是什么,因为它是发送它们的用户 - 无论用户是否参与过程。

你从错误的一端解决问题。 编程最重要的规则之一是: 永远不要相信用户条目是编程的基本规则! 用户可以而且犯错误,其中一些试图伤害你或偷你。 欢迎进入俱乐部。

因此,如果您收到的POST或GET参数不是您所期望的,无论是错误的还是恶意的意图,您都不得允许您的代码执行任何可能以任何方式损害您的操作。 如果你的代码按照它的设计方式,只是通过向你的某个页面发送特定的POST值来使你容易受到伤害,那么你的设计就有问题,你应该重新考虑这个问题。

在设计程序时,这个问题是一个主要问题,您会发现大量有关如何防止代码反对您的文档,教程和提示。

别担心,这不是很难处理,而且你与关注想出了自己证明你是在盘算的东西如何好,如何COMMITED你产生良好的代码的事实,没有理由你应该失败。

如果您在接受安全更新时遇到特定问题,请随意发布其他问题。

每个人都可以向您的应用程序发送他们想要的任 HTTPS只是意味着他们无法查看和操纵其他人发送给您的应用程序的内容。 但是你总是必须假设发送到你的应用程序的内容是POST,GET,COOKIE或其他什么是邪恶的。

HTTPS在传输中加密,因此无法解决此问题。

你不能相信任何客户端。 通过webform发送的任何数据都可以设置为客户想要的任何数据。 他们甚至不必拦截它。 他们只需修改页面上的HTML即可。

没有办法解决这个问题。 您可以而且应该进行客户端验证。 但是,由于这通常只是JavaScript,因此可以修改/禁用它。

因此,您必须在收到数据服务器端时对其进行验证。 数字应为数字,删除任何反斜杠或无效的特殊字符等。

在HTTPS中,之前建立了TLS通道并且传输了HTTP数据,因此从这个角度来看,GET和POST请求之间没有区别。

它是加密的,但只能用于防止mitm攻击。

你的php后端不知道它收到的数据来自何处,这就是为什么你必须假设它收到的任何数据直接来自黑客。

由于您无法防止发送令人讨厌的数据,因此您必须确保处理所有安全接收的数据。 采取的一些步骤涉及确保无法执行上传的任何文件(即,如果有人上传php文件而不是图像),确保收到的数据永远不会直接与数据库交互(即https://xkcd.com/327 / ),并确保您不会因为他们说他们以用户身份登录而信任某人。

为了进一步保护,您可以对收到的帖子数据进行一些研究,并查看最佳实践。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM