2

我需要加密从模板传递的 id 以在 django 中查看。实际上,user_id 必须在 url 中加密,因此没有人可以获取通过 url 这段代码传递的 id。

<tr>    
{% with user_id=item.user_id %}
#user_id have to be encrypted                                   
<td><center><a href="{% url "accounts" user_id %}">{{ item.Company_name }}</a></center></td>
{% endwith %}

我一直在寻找一段时间,但我没有找到如何在模板中加密参数。

4

2 回答 2

2

我认为 Paulo 将加密与签名混淆了。查看Pycrypto的加密功能。

于 2015-08-16T17:48:23.663 回答
1

好吧,我不知道encrypt这正是你的意思。我的意思是,使用say加密字符串md5将无法在服务器端为您解密字符串。为此,您应该使用encode,例如使用base64编码系统。这会将 id 替换为编码字符串,但有人savvy可能会注意到这一点并解码您 url 中的字符串。

您在这里尝试完成的是不推荐的通过默默无闻的安全性。您可以应用此技术,但最好在代码中添加更多安全性,例如权限和类似的东西。

要对您的用户 ID 进行编码,您可以将此方法添加到您的Item类中:

class Item

    ...

    def encoded_id(self):
        import base64
        return base64.b64encode(str(self.user_id))

    def decode_id(self, id):
        import base64
        return base64.b64decode(id)

    ...

这样你就可以在你的视图中做到这一点:

<tr>    
{% with user_id=item.encoded_id %}
#user_id have to be encrypted                                   
<td><center><a href="{% url "accounts" user_id %}">{{ item.Company_name }}</a></center></td>
{% endwith %}

您将拥有使用idbase64 编码的网址。

注意我之前的警告。你永远不应该只依赖这个,这是一种有效的做法,但请记住编码可以反转。

希望这可以帮助!

于 2013-05-16T15:42:02.897 回答