保护 PHP 的 Web 服务

2023-12-12

我正在 android 中开发一个小项目,它使用 php webservices 的调用。

我希望我的网络服务受到保护,但是通过使用 GET/POST 请求方法,我认为它没有受到太多保护。经过谷歌搜索后,我在“phpseclib”中找到了 RSA 实现,它也有很好的文档。但我很困惑,所以想在这里发布这个。

基本上我需要的是:

  1. 在 Android 中,我将调用一个带有“加密参数合并在一个字符串中”的 url。 (我首先将参数编码为 json,然后加密)。
  2. 我将在 php 中提取这些参数,并进行相应的处理。

json字符串: {user_id:[email protected], passwd: Password!}

加密为: XsjkhkjwehrkanmNXmnskjawrhjlljahdhuw

eg. http://my.domain.com/webservices/call.php?params=Xsjkhkjwehrkanm,NXmnskjawrhjlljahdhuw在 php 中,我将从 $_GET['params"'] 中提取用户 ID 和密码

这在 b 中是可能的ase64_encode(), base64_decode(), but base64编码器只会混淆字符串,实际上不会加密。

我需要公钥/私钥机制。

不过我试过这个:(https://launchkey.com/docs/api/encryption/php/phpseclib)

<?
function rsa_encrypt($key, $message) {
    $rsa = new Crypt_RSA(); 
    $rsa->loadKey($key); 
    $encrypted = base64_encode($rsa->encrypt($message)); 
    return $encrypted;
}
?>

它不返回任何 $加密字符串。

任何帮助将非常感激。

谢谢..! :)


如果您不熟悉加密,则应该采用简单的路线并使用 HTTPS,如评论中所建议的那样。

另外,正如评论中所建议的,不要通过网页上的 GET 发送密码,因为密码显示在地址栏中,路人可以从屏幕上读取该密码。

HTTPS (SSL/TLS) 为 Web 服务器和客户端之间的整个连接提供端到端加密。这使您可以以明文形式发送所有数据,而不必担心它,因为它是在较低级别加密的。

由于它不是调用您的 Web 服务器的 Web 浏览器,因此您甚至不需要支付 SSL 证书的费用。您可以创建自签名证书。只需确保验证每个连接上的签名即可防止中间人攻击。不过,这有点棘手,所以,如果您是新手,只需支付 SSL 证书费用,然后让 Android 为您处理证书验证。

回答你的直接问题:

您可能已经发现,编码不是加密。 Base64 是编码,不提供安全性。

您不能简单地生成 RSA 公钥/私钥对,使用私钥加密数据,然后将其发送到您的服务器。您必须首先与服务器共享您的公钥。好吧,任何从网络上嗅出公钥的人都可以解密它。

您可能会让客户端生成随机对称密钥并使用服务器的公钥对其进行加密。然后,服务器将使用私钥对其进行解密,并使用共享密钥来加密数据并将其发送给您。

问题是攻击者可以简单地将所有数据重播到服务器以查看相同的输出。这些随机的东西需要由服务器生成,以确保它们实际上是随机的,因此您必须由服务器生成密钥,但如果服务器只是使用私钥进行加密,则任何拥有公钥的人都可以解密它。

因此,您需要某种方法来安全地派生共享密钥,一些复杂的数学方法来共享服务器和客户端都可以用来计算相同共享密钥的一些数据。

您可以自己执行此操作,但当您可以仅使用 SSL 时,您将调用复杂的过程和函数,SSL 可以为您做同样的事情。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

保护 PHP 的 Web 服务 的相关文章

  • 完成特定 Activity 的所有实例

    应用程序中可以有很多活动 最后启动的活动保留在堆栈顶部 按下后它会完成当前活动 我有一系列活动 这是流程 如果我们有 A B C 1 D C 2 活动 C 1 和 C 2 是在导航应用程序时启动的活动 C 的两个不同实例 因此 必需的是清除
  • 创建用于 Android 库分发的 JAR

    我正在开发一个 android 库 并希望导出一个 JAR 文件 我可以分发该文件供其他人在他们的应用程序中使用 我不想分发源代码 因为它包含有关发布到我的网络服务器的详细信息 我尝试使用在 bin 目录中创建的 JAR 文件并将该 jar
  • GCM(Google 云消息传递)是否需要 Google 帐户?

    我需要编写一个简单的应用程序来获取推送通知 我使用 GCM 它使用 Google Play 服务来获取信息 我的问题是 要访问 GCM 是否需要 Google 帐户 我可以使用其他电子邮件帐户来识别设备吗 有没有其他方法可以获取另一个电子邮
  • EditText 不显示当前输入(Android 4)

    我的 Android 应用程序包含一个EditText http developer android com reference android widget EditText html查看可以在其中键入一些短消息 单行 按键盘的DONE键
  • PHP 和 ASP.Net 可以在 IIS 7.5 中的同一网站中一起运行吗?

    我们网站的一部分是用 PHP 完成的 而我们网站的一部分是用 ASP Net 完成的 我们刚刚使用 Windows Server 2008 R2 设置了一个新的 Web 服务器 其中安装了 IIS 7 5 我知道 IIS 7 支持 PHP
  • PHP 静态变量用双引号引起来

    如何让 PHP 计算双引号中的静态变量 我想做这样的事情 log self CLASS METHOD entering 我尝试过各种 组合来获取变量值self CLASS 但没有任何效果 我目前已经解决了字符串连接问题 但输入起来很痛苦 l
  • 为什么设置 MediaRecorder 时显示错误 IllegalStateException?

    我的代码设置 MediaRecorder 它显示行集质量错误 mMediaRecorder new MediaRecorder Step 1 Unlock and set camera to MediaRecorder mCamera st
  • 如何将 currentTimeMillis 转换为可读的日期格式? [复制]

    这个问题在这里已经有答案了 我想用currentTimeMillis两次 这样我就可以计算持续时间 但我也想以用户可读的格式显示时间和日期 我遇到了麻烦currentTimeMillis有利于计算 但我看不到内置函数可以转换为合适的时间或时
  • 如何在 MySQL 中使用 INET_ATON 进行通配符搜索 IP 地址?

    我发现这个方法可以使用 INET ATON 将 IP 地址作为整数存储在 MySQL 数据库中 https stackoverflow com a 5133610 4491952 https stackoverflow com a 5133
  • mysqli_connect(): (HY000/2002): 无法建立连接,因为目标机器主动拒绝

    我知道有很多这样的问题 但我没有找到任何解决方案 我尝试过的事情 检查防火墙 重新启动我的电脑和 Apache 服务器 重新启动MYSQL 检查了我的代码 尝试了我所知道的和在互联网上找到的一切 这是我的代码
  • 如何在 Api-Platform 中按链接属性过滤结果?

    我有一个User实体和一个Organisation实体 存在关系ManyToOne之间Booking and User ORM ManyToOne targetEntity App Entity User inversedBy bookin
  • 如何在Webview中保存用户名和密码

    目前 我还在学习Android开发的过程中 所以如果我的这个问题对你来说不太容易理解 请原谅 我创建了一个 Android 应用程序 它使用 RecyclerView 显示一组列表 当用户单击列表中的每个名称时 它会将它们重定向到一组不同的
  • Android Windows:它们何时以及如何创建?

    我已经阅读了标准的 Windows 相关文档并翻阅了 一堆源代码 试图理解 Android 如何以及何时 窗口已创建 我相信我已经拥抱它并愿意 对其进行验证或更正 据我所知 只有两种方法可以获得 Window 对象的句柄 1 Activit
  • Activity 上的 OnTouchListener 从不调用

    我使用了这段代码 但是当我在运行时单击活动时 它永远不会在 OnTouch 方法中命中 有人可以指导我我做错了什么吗 我需要设置此活动的内容视图吗 实际上我想要用户在执行过程中触摸的活动的坐标 public class TouchTestA
  • CodeIgniter:使用多维 POST 数据验证表单

    所以框架是CodeIgniter 2 0 2 我有一个表单 其中包含与数据库中的行相对应的字段组 字段名称的格式为 opt 0 foo opt 0 bar opt 1 foo opt 1 bar etc 索引 1 2等 并不对应于数据库中的
  • 随着速度变化,速度表针规绕其中心旋转

    Hi all 我编写了一个应用程序 其中有一个速度计 其指针垂直设置为 90 度 我试图以每秒变化的速度绕其中心旋转指针 我在文本视图中显示变化的速度 从 0 到 120 随机 我正在从远程服务获取速度并显示在文本视图中 因此 当速度发生变
  • 动画结束后更改视图位置

    我开发了一个基于ViewGroup我的问题是我需要在动画结束后保存项目的位置 我打了电话setFillAfter true 在我创建的动画对象中AnimationListener并在其中onAnimationEnd方法调用View layo
  • RecyclerView 适配器的 Kotlin 泛型

    我正在尝试编写一个通用的 recyclerview 适配器 我找到了几个例子 然而 仍然无法弄清楚如何实现通用适配器 我写的代码是 open abstract class BaseAdapter
  • Android 使用非公历

    我正在创建一个DatePickerDialogFragment用户将在其中选择出生日期 我想确保我可以处理非公历日期 我无法更改在我的设备上使用的日历类型 Android 是否允许用户切换日历类型 如果是的话 步骤是什么 到目前为止我还没有
  • PDO 返回不正确但重复的数据。密钥不在数据库中。

    我刚开始使用 pdo 语句 所以可能是一些简单的东西 我还没有在 php net 上读过 查询数据库时我收到重复的结果 Result 0 gt Array umeta id gt 31 0 gt 31 user id gt 2 1 gt 2

随机推荐

  • 如何在 MapView 上创建动态编号的 Pin 指针?

    我想在我的设备上显示一些位置MapView 这些位置将显示具有数字 1 2 3 等的图钉 类似于 Google 地图结果 但它是 A B C 我认为拥有所有数字的引脚是不可行的 有什么方法可以让我创建一个带有 pin 背景的布局TextVi
  • python multiprocess.Pool 在标准输出中按顺序显示结果

    在 multiprocessing Pool 中 我试图以相同的顺序显示我的打印结果 from multiprocessing import Pool import time def func arg time sleep 0 001 pr
  • 尝试提供 Meteor 应用程序时出现“babel-runtime”错误

    我最近开始使用 Meteor 和 React 我跟着tutorial在 Meteor 网站上没有问题 然后我尝试创建另一个项目 尝试遵循另一个项目tutorial 对于旧版本的 Meteor 在这个过程中 Meteor 开始抛出一些难以理解
  • 如何使用项目反应器实现调用重复,直到满足特定条件?

    有没有什么方法可以使用项目反应器来做这样的事情 fetchSystemUpdates return Mono
  • 过滤 IQueryable 子列表

    使用实体框架 但这可能无关紧要 如果我有一个 Iqueryable 如何过 滤子列表并使其保持 IQueryable 这样它就不会到达数据库 如果我有 10 个项目 每个项目有 3 个子项目 如何过滤它以便返回所有 10 个项目 并且它们的
  • IE9 中简单模式的问题

    昨天我推出了一个新网站 在将文件上传到服务器之前 我在 IE8 Firefox Safari 和 Chrome 中测试了该网站 一切似乎都正常 但我刚刚安装了IE9简单模态此浏览器中不显示框 我正在使用以下 JavaScript 代码 jQ
  • 用于过滤 Google 表格中具有最高值的唯一行的公式

    我有一张工作表 可以每天多次自动从多个帐户中提取社交指标 因此我经常有同一个帖子的多行数据 如何过滤新工作表中的行 以便每个唯一帖子仅保留展示次数最高 G 列 的帖子 ID F 列 我想要的过滤结果 我已经探索了查询 不是我的强项 和过滤公
  • ASP.NET MVC 中的 Cookie 管理

    我想在 ASP net MVC 中向 cookie 添加一些内容 处理 cookie 或更多 cookie 中所有内容的最佳方法是什么 在asp net mvc中处理cookie有什么好方法吗 这是一个例子 public class Hom
  • 日期范围 Google 图表工具

    我正在尝试使用 Google Charts 在折线图上显示数据 数据显示正常 但我想设置要显示的日期范围 数据以 JSON 文字格式从数据库发送 cols label Week type date label Speed type numb
  • GWT Cell树,如何使用?

    有人可以解释一下如何使用 GWT 单元树吗 我正在尝试谷歌搜索 但没有找到任何有价值的教程 Thanks Try 谷歌示例 1 包括 onModuleLoad 方法
  • 在 Windows XP 下运行 Python 二进制文件

    我将 PySide 应用程序编译为 x32 和 x64 模式 并且它可以在 Windows 7 下工作 但是我发现该应用程序无法在Windows XP下启动 我应该在规范文件中另外使用一些技巧吗 当前的 PyInstaller 脚本在 ap
  • 如何在Excel中使用VBA截断数字而不是四舍五入?

    我需要创建一个表 操作员可以在其中输入数字 这是受保护的工作表 因此操作员无法更改任何内容 他们只能在特定单元格中输入数字 适用于 Mac 的 Microsoft 365 我需要 Excel 显示 2 位小数而不进行四舍五入 例如 对于 3
  • 涉及填充位置的广播问题

    介绍 我有一个函数func这是可矢量化的 我使用它对其进行矢量化np frompyfunc 而不是使用嵌套for循环 我只想调用它一次 因此我需要用以下内容填充输入np newaxis s 我的目标是摆脱两个嵌套for循环并使用numpy
  • cellForRowAtIndexPath:尝试访问数组 objectAtIndex:indexPath.row 时崩溃

    我正在将数据加载到UITableView 从一个习惯UITableViewCell 自己的班级和笔尖 它工作得很好 直到我尝试访问objectAtIndex indexPath row对于一些数组 我先发布我的代码 这样你可能会更容易理解我
  • 在 vb.net 中填充下拉列表

    我有一个从 SQL Server 数据库填充的下拉列表 填充列表不是问题 但有谁知道如何填充列表项的值部分
  • Facebook数据库设计?

    我一直想知道Facebook是如何设计好友用户关系的 我认为用户表是这样的 user email PK user id PK password 我用用户的数据 性别 年龄等通过用户电子邮件连接我假设 计算表格 它如何将所有朋友连接到该用户
  • “MariaDB 与许多客户端合作将 Microsoft SQL 和 Oracle 迁移到 MariaDB”的含义

    https mariadb com blog getting microsoft sql server data mariadb connect storage engine 谁能告诉我上面这句话是什么意思 MariaDB 与许多客户合作
  • Linux 脚本选择菜单

    我需要使用 select 循环和 case 指令创建一个包含六个选项的选择菜单 但不是菜单选项的 ECHO 命令 它们必须显示如下 1 opt1 2 opt2 3 opt3 4 opt4 5 opt5 6 opt6 并且不喜欢 1 opt1
  • 选择除了 BeautifulSoup 中某些类的 div 之外的所有 div

    正如中所讨论的这个问题一个人可以轻松得到所有div具有某些类别 但在这里 我有一个我想要排除的类列表 并且想要获取列表中没有给出任何类的所有 div For i e classToIgnore class1 class2 class3 现在
  • 保护 PHP 的 Web 服务

    我正在 android 中开发一个小项目 它使用 php webservices 的调用 我希望我的网络服务受到保护 但是通过使用 GET POST 请求方法 我认为它没有受到太多保护 经过谷歌搜索后 我在 phpseclib 中找到了 R