PHP通过HTML传递POST标签

时间:2018-05-31 09:22:37

标签: php html post

我有以下代码:

<a class='list-group-item active' href='index.php?galleryId=$gallery[0]&id=gallery'>
                    <h4 class='list-group-item-heading'>$gallery[2]</h4>
                    <p class='list-group-item-text'>$gallery[3]</p>
                </a>

我不希望用户能够在URL中编辑galleryId,因为他可以通过编辑URL中的值来访问不适合他的图库。

这是网址:http://localhost/bilderDb/php/index.php?galleryId=2&id=gallery

是否可以通过a标签传递POST,以便用户无法看到它。或者还有其他解决方案吗?

感谢您的帮助!

编辑:我想我不清楚。用户可以看到galleryId。我不希望他能够改变它。当它在GET变量中时,他可以在URL中更改它。

3 个答案:

答案 0 :(得分:0)

有几种方法可以保护图库免受其他用户的侵害

  1. 您可以使用slug名称(gallery_id中包含的随机字符串,如:fun-at-school-90i8j3)而不是使用gallery_id,因此很难了解其他用户的gallery slug。

  2. 您可以在图库页面上使用包含图库ID和类型的隐藏输入字段。

  3. 您可以使用安全方法加密gallery_id。

  4. 放置服务器端验证以检查与用户关联的图库访问权限,每次检查图库ID是否与有效用户相关联。

答案 1 :(得分:0)

  

是否可以通过标签传递POST

并非没有使用<a>毫无意义。

  

所以用户无法看到它。

用户可以看到他们的浏览器在POST请求中发送的数据。这是他们的浏览器。

  

或者还有其他解决方案吗?

认证。授权。

如果用户不应该访问某个网址,那么,如果他们提出请求,请验证他们的身份(例如让他们登录)并使用403进行回复。

答案 2 :(得分:-1)

您好我认为您应该创建两个自定义函数,例如encodeUrlParameter()decodeUrlParameter(),其自定义逻辑为encryptiondescription逻辑。

  1. 当您向用户发送页面时,请使用这些函数来加密parameters,这样用户就无法以有意义的方式调整它,因为您害怕关闭。
  2. second还为user访问级别实现了一个参数,并对其进行了加密。所以它会实现你的目标。 no tempering with dataaccess level也是简单的方式。
  3. 您必须定义用户级别,并且必须为那些对用户隐藏的用户使用会话变量。 如果用户的session id未获得他的许可,则用户无法执行操作。
  4. 例如,使用此Github Repo代码Here

    在这里,您将获得encrypt()decrypt()等功能。很简单 但我给的是一个示例代码。

    <?php
        function encrypt($string, $key=5) {
            $result = '';
            for($i=0, $k= strlen($string); $i<$k; $i++) {
                $char = substr($string, $i, 1);
                $keychar = substr($key, ($i % strlen($key))-1, 1);
                $char = chr(ord($char)+ord($keychar));
                $result .= $char;
            }
            return base64_encode($result);
        }
        function decrypt($string, $key=5) {
            $result = '';
            $string = base64_decode($string);
        for($i=0,$k=strlen($string); $i< $k ; $i++) {
                $char = substr($string, $i, 1);
                $keychar = substr($key, ($i % strlen($key))-1, 1);
                $char = chr(ord($char)-ord($keychar));
                $result.=$char;
            }
            return $result;
        }
    
        $en = encrypt('1',6);
        echo "Encrypted:  " .$en;
        echo '<hr />';
    
        echo "Decrypted:  " .decrypt("$en",6);
    ?>
    

    现在,您可以在使用之前以encryptedparamerter namevalue传递decrypt数据,或者以加密形式和encryption传递这些数据。

    <强> OutputImage

    enter image description here

    注意简而言之,您可以使用decryptionlaravel new project_name的GitHub代码,也可以编写自己的功能代码。