php中get传直显示了怎么办

worktile 其他 43

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在PHP中,GET传参是一种常见的传参方式,通常在URL中使用问号(?)后面加上参数名和值的形式进行传递。例如:http://example.com/index.php?id=123。

    如果你想隐藏GET传参并不直接显示在URL中,有以下几种常用方法可以实现:

    1. 使用POST方式传参:POST方式将参数放在请求的正文中,相比GET方式更安全,也不会直接显示在URL中。在HTML表单中,将form的method设置为”POST”即可使用POST方式提交表单数据到服务器端。

    2. 使用SESSION:使用SESSION可以在服务器端保存数据,而无需将数据直接暴露在URL中。通过session_start()函数开启会话,并使用$_SESSION数组来存取需要传递的参数。

    示例代码:
    “`php
    // 传递参数
    session_start();
    $_SESSION[“param”] = “value”;

    // 获取参数
    session_start();
    $param = $_SESSION[“param”];
    echo $param;
    “`

    3. 使用加密算法:可以使用加密算法对传参进行加密处理,然后在URL中传递加密后的参数,接收端对参数进行解密即可。

    示例代码:
    “`php
    function encrypt($param){
    // 加密算法
    // …
    return $encryptedParam;
    }

    function decrypt($encryptedParam){
    // 解密算法
    // …
    return $param;
    }

    // 传递参数
    $param = “value”;
    $encryptedParam = encrypt($param);
    $url = “http://example.com/index.php?data=”.urlencode($encryptedParam);

    // 获取参数
    $data = $_GET[“data”];
    $decryptedParam = decrypt(urldecode($data));
    echo $decryptedParam;
    “`

    4. 使用.htaccess文件进行URL重写:通过修改服务器的配置文件.htaccess,可以将URL进行重写,隐藏GET参数。在.htaccess文件中配置规则,将URL重写为更友好的形式。

    示例代码:
    “`htaccess
    RewriteEngine On
    RewriteRule ^article/([0-9]+)$ article.php?id=$1 [L]
    “`

    上述代码将URL从`http://example.com/article.php?id=123`重写为`http://example.com/article/123`。

    请注意,以上方法仅是对GET传参的隐藏处理,无法完全避免参数泄露的风险。对于敏感数据的传递,最好使用更安全的方式,如使用SSL加密连接、使用POST方式传参等。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在PHP中,当我们使用GET方法传递参数时,这些参数会附加在URL后面,可以很容易地被直接显示出来。这可能会导致安全隐患,因为攻击者可以轻松获取和修改这些参数。为了解决这个问题,我们可以采取以下几种方法:

    1. 验证和过滤输入参数:在接收到GET参数之后,我们应该对其进行验证并过滤,确保其符合我们预期的格式和值范围。这可以通过使用PHP内置函数如`filter_var()`或正则表达式来实现。

    2. 使用POST方法:相比于GET方法,POST方法将参数放在请求体中,而不是URL中,因此不能直接显示出来。通过使用POST方法传递参数,可以显著减少参数暴露的风险。

    3. 使用HTTPS协议:HTTPS协议通过加密传输HTTP请求和响应数据,可以防止第三方窃听和篡改数据。通过将网站迁移到HTTPS,可以保护GET请求中传递的参数的安全性。

    4. 对敏感信息进行加密:对于包含敏感信息的GET参数,我们可以在传递之前对其进行加密处理。这样即使被截获,攻击者也无法轻易地解密出原始数据。

    5. 使用会话管理:如果需要跟踪用户的会话状态,可以考虑使用会话管理机制,如PHP的`$_SESSION`变量。通过将会话信息存储在服务器端,而不是通过URL传递,可以增强安全性。

    总结起来,避免直接显示GET传递的参数的关键是验证和过滤输入、使用POST方法、使用HTTPS协议、对敏感信息加密以及使用会话管理等方法。通过结合这些措施,我们可以提高PHP应用程序中GET参数的安全性。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在PHP中,GET方式传输参数会将参数显示在URL中,这可能会导致安全隐患,因为URL参数被保存在浏览器历史记录中、服务器日志中,还可能被第三方拦截或窃取。为了解决这个问题,可以通过以下几种方式来处理。

    1. 使用POST方法传递参数:POST方法将参数包含在请求体中,不显示在URL中。可以通过HTML中的

    标签和PHP中的$_POST数组来实现。

    HTML部分:
    “`html




    “`

    PHP部分(process.php):
    “`php

    “`

    2. 使用加密传输:可以通过对参数进行加密处理,然后再传输。接收方在接收到参数后进行解密操作。可以使用加密算法,如AES加密、RSA加密等。

    加密传输的示例代码如下:
    “`php
    // 加密参数
    $param1 = ‘value1’;
    $param2 = ‘value2’;

    $encrypted_param1 = encrypt($param1); // 使用加密算法对参数进行加密
    $encrypted_param2 = encrypt($param2);

    // 将加密后的参数传输给接收方

    // 解密参数
    $decrypted_param1 = decrypt($encrypted_param1); // 对接收到的参数进行解密
    $decrypted_param2 = decrypt($encrypted_param2);

    // 对解密后的参数进行处理
    “`

    3. 使用Hash验证:可以在URL中传递一个唯一的哈希值,服务器端通过哈希验证参数的完整性和正确性。可以使用哈希算法,如SHA1、MD5等。

    Hash验证的示例代码如下:
    “`php
    // 生成哈希值
    $param1 = ‘value1’;
    $param2 = ‘value2’;

    $hash = hash(‘md5’, $param1 . $param2); // 将参数拼接后进行哈希运算

    // 将参数和哈希值传输给接收方

    // 验证哈希值
    $param1 = $_GET[‘param1’];
    $param2 = $_GET[‘param2’];
    $hash = $_GET[‘hash’];

    $hash_check = hash(‘md5’, $param1 . $param2); // 对接收到的参数拼接后进行哈希运算

    if ($hash == $hash_check) {
    // 参数验证通过,进行处理
    } else {
    // 参数验证失败,抛出异常或进行其他处理
    }
    “`

    以上是几种处理GET传递参数直接显示的方法,根据实际需求选择适合的方法来确保参数的安全性。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部