【问题标题】:Analyzing security of Django template code分析 Django 模板代码的安全性
【发布时间】:2016-03-02 01:32:01
【问题描述】:

我需要一些概念方面的帮助。

在我的 Django Web 应用程序中,用户编写内容,其他用户赞成/反对所述内容。标准的东西。

投票过去通过 POST 进行。例如。类似的东西:

<form  method="POST" action="{% url 'vote' %}" class="vote_form">
{% csrf_token %}
<input type="hidden" id="id_link" name="link" class="hidden_id" value="{{ link.pk }}">
<input type="hidden" id="id_voter" name="voter" class="hidden_id" value="{{ user.pk }}">
<input type="hidden" id="id_page" name="section_number" value="{{ forloop.counter }}">  

<input class="voting" type="submit" name="val" value="upvote"><br>
<input class="voting" type="submit" name="val" value="downvote">

</form>

投票现在通过以下方式进行:

<a href="{% url 'vote' link.pk user.pk forloop.counter 1 %}">upvote</a><br>
<a href="{% url 'vote' link.pk user.pk forloop.counter 0 %}">downvote</a>

我的两个问题是:

1) 在其他条件相同的情况下(其他条件相同),这两种方法在安全性方面有什么区别吗?我在我的网站上运行了 Wapiti(安全扫描仪);后一种方法存在一些安全风险(SQL 注入、盲 SQL 注入等),而前一种方法完全干净(但是是的,我也确实更改了一些底层代码)。

2) 前一种方法在 nginx 日志中留下了一个 POST 日志条目。后一种方法如何显示在 nginx 日志中?获取?

【问题讨论】:

    标签: django security nginx


    【解决方案1】:

    您的代码中没有任何不安全,但这仍然不是一个好主意。

    通常,您应该避免在 GET 上执行影响数据库的操作。一种可能的后果是,如果搜索引擎抓取了您的网站,它会跟随投票链接并导致投票实际被注册;这不会发生在您的原始代码中,因为搜索引擎不会提交表单。

    【讨论】:

      猜你喜欢
      • 2011-07-07
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 2014-03-06
      • 2019-11-26
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多