Skip to content

Commit ef8174d

Browse files
committed
修复部分代码漏洞
1 parent c112a21 commit ef8174d

File tree

8 files changed

+23
-69
lines changed

8 files changed

+23
-69
lines changed

accounts/views.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ class RegisterView(FormView):
3535
form_class = RegisterForm
3636
template_name = 'account/registration_form.html'
3737

38+
@method_decorator(csrf_protect)
39+
def dispatch(self, *args, **kwargs):
40+
return super(RegisterView, self).dispatch(*args, **kwargs)
41+
3842
def form_valid(self, form):
3943
if form.is_valid():
4044
user = form.save(False)

blog/templatetags/blog_tags.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def custom_markdown(content):
5353
def get_markdown_toc(content):
5454
from djangoblog.utils import CommonMarkdown
5555
body, toc = CommonMarkdown.get_markdown_with_toc(content)
56-
return mark_safe(toc), mark_safe(body)
56+
return mark_safe(toc)
5757

5858

5959
@register.filter(is_safe=True)

blog/views.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import os
55
import uuid
66

7-
from django import forms
87
from django.conf import settings
98
from django.http import HttpResponse, HttpResponseForbidden
109
from django.shortcuts import get_object_or_404
@@ -117,17 +116,7 @@ def get_object(self, queryset=None):
117116
return obj
118117

119118
def get_context_data(self, **kwargs):
120-
articleid = int(self.kwargs[self.pk_url_kwarg])
121119
comment_form = CommentForm()
122-
user = self.request.user
123-
# 如果用户已经登录,则隐藏邮件和用户名输入框
124-
if user.is_authenticated and not user.is_anonymous and user.email and user.username:
125-
comment_form.fields.update({
126-
'email': forms.CharField(widget=forms.HiddenInput()),
127-
'name': forms.CharField(widget=forms.HiddenInput()),
128-
})
129-
comment_form.fields["email"].initial = user.email
130-
comment_form.fields["name"].initial = user.username
131120

132121
article_comments = self.object.comment_list()
133122

comments/forms.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,6 @@
55

66

77
class CommentForm(ModelForm):
8-
url = forms.URLField(label='网址', required=False)
9-
email = forms.EmailField(label='电子邮箱', required=True)
10-
name = forms.CharField(
11-
label='姓名',
12-
widget=forms.TextInput(
13-
attrs={
14-
'value': "",
15-
'size': "30",
16-
'maxlength': "245",
17-
'aria-required': 'true'}))
188
parent_comment_id = forms.IntegerField(
199
widget=forms.HiddenInput, required=False)
2010

comments/tests.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,34 +41,32 @@ def test_validate_comment(self):
4141
article.status = 'p'
4242
article.save()
4343

44-
commenturl = reverse(
44+
comment_url = reverse(
4545
'comments:postcomment', kwargs={
4646
'article_id': article.id})
4747

48-
response = self.client.post(commenturl,
48+
response = self.client.post(comment_url,
4949
{
5050
'body': '123ffffffffff'
5151
})
5252

53-
self.assertEqual(response.status_code, 200)
53+
self.assertEqual(response.status_code, 302)
5454

5555
article = Article.objects.get(pk=article.pk)
56-
self.assertEqual(len(article.comment_list()), 0)
56+
self.assertEqual(len(article.comment_list()), 1)
5757

58-
response = self.client.post(commenturl,
58+
response = self.client.post(comment_url,
5959
{
6060
'body': '123ffffffffff',
61-
'email': user.email,
62-
'name': user.username
6361
})
6462

6563
self.assertEqual(response.status_code, 302)
6664

6765
article = Article.objects.get(pk=article.pk)
68-
self.assertEqual(len(article.comment_list()), 1)
66+
self.assertEqual(len(article.comment_list()), 2)
6967
parent_comment_id = article.comment_list()[0].id
7068

71-
response = self.client.post(commenturl,
69+
response = self.client.post(comment_url,
7270
{
7371
'body': '''
7472
# Title1
@@ -83,15 +81,13 @@ def test_validate_comment(self):
8381
8482
8583
''',
86-
'email': user.email,
87-
'name': user.username,
8884
'parent_comment_id': parent_comment_id
8985
})
9086

9187
self.assertEqual(response.status_code, 302)
9288

9389
article = Article.objects.get(pk=article.pk)
94-
self.assertEqual(len(article.comment_list()), 2)
90+
self.assertEqual(len(article.comment_list()), 3)
9591
comment = Comment.objects.get(id=parent_comment_id)
9692
tree = parse_commenttree(article.comment_list(), comment)
9793
self.assertEqual(len(tree), 1)

comments/views.py

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Create your views here.
2-
from django import forms
3-
from django.contrib.auth import get_user_model
42
from django.http import HttpResponseRedirect
3+
from django.utils.decorators import method_decorator
4+
from django.views.decorators.csrf import csrf_protect
55
from django.views.generic.edit import FormView
66

77
from blog.models import Article
@@ -13,6 +13,10 @@ class CommentPostView(FormView):
1313
form_class = CommentForm
1414
template_name = 'blog/article_detail.html'
1515

16+
@method_decorator(csrf_protect)
17+
def dispatch(self, *args, **kwargs):
18+
return super(CommentPostView, self).dispatch(*args, **kwargs)
19+
1620
def get(self, request, *args, **kwargs):
1721
article_id = self.kwargs['article_id']
1822

@@ -23,16 +27,6 @@ def get(self, request, *args, **kwargs):
2327
def form_invalid(self, form):
2428
article_id = self.kwargs['article_id']
2529
article = Article.objects.get(pk=article_id)
26-
u = self.request.user
27-
28-
if self.request.user.is_authenticated:
29-
form.fields.update({
30-
'email': forms.CharField(widget=forms.HiddenInput()),
31-
'name': forms.CharField(widget=forms.HiddenInput()),
32-
})
33-
user = self.request.user
34-
form.fields["email"].initial = user.email
35-
form.fields["name"].initial = user.username
3630

3731
return self.render_to_response({
3832
'form': form,
@@ -45,13 +39,7 @@ def form_valid(self, form):
4539

4640
article_id = self.kwargs['article_id']
4741
article = Article.objects.get(pk=article_id)
48-
if not self.request.user.is_authenticated:
49-
email = form.cleaned_data['email']
50-
username = form.cleaned_data['name']
5142

52-
user = get_user_model().objects.get_or_create(
53-
username=username, email=email)[0]
54-
# auth.login(self.request, user)
5543
comment = form.save(False)
5644
comment.article = article
5745

templates/blog/tags/article_info.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,16 @@ <h1 class="entry-title">
5151
<p class='read-more'><a
5252
href=' {{ article.get_absolute_url }}'>Read more</a></p>
5353
{% else %}
54-
{% get_markdown_toc article.body as markdown %}
55-
{% if article.show_toc %}
5654

55+
{% if article.show_toc %}
56+
{% get_markdown_toc article.body as toc %}
5757
<b>目录:</b>
58-
{{ markdown.0|safe }}
58+
{{ toc|safe }}
5959

6060
<hr class="break_line"/>
6161
{% endif %}
6262
<div class="article">
63-
{{ markdown.1|safe }}
63+
{{ article.body|custom_markdown|escape }}
6464
</div>
6565
{% endif %}
6666

templates/comments/tags/post_comment.html

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,6 @@ <h3 id="reply-title" class="comment-reply-title">发表评论
1313
{{ form.body }}
1414
{{ form.body.errors }}
1515
</p>
16-
<p class="comment-form-author">
17-
{% if not form.name.is_hidden %}
18-
{{ form.name.label_tag }}
19-
{% endif %}
20-
{{ form.name }}
21-
{{ form.name.errors }}
22-
<p class="comment-form-email">
23-
{% if not form.email.is_hidden %}
24-
{{ form.email.label_tag }}
25-
{% endif %}
26-
{{ form.email }}
27-
{{ form.email.errors }}
28-
</p>
2916
{{ form.parent_comment_id }}
3017
<div class="form-submit">
3118
<span class="comment-markdown"> 支持markdown</span>

0 commit comments

Comments
 (0)