Forms get a second csrfToken field: two XPath expressions in document.php miss the @
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 1/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 85/100
Hướng nghiên cứu
Trong system/core/document.php, issue xác định hai biểu thức XPath ở dòng 363 và 510. Đọc cách findOneXPath được sử dụng quanh các dòng đó, sau đó kiểm tra đầu ra của biểu mẫu để xác nhận có một token CSRF và một danh sách lỗi sau khi sửa các phép thử thuộc tính. Issue cung cấp các bước tái hiện trong nl/Start/edit; hãy xác minh các trường và danh sách trùng lặp đã biến mất.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Problem. Every HTMLForm gets a second csrfToken input, and a form may get a second error list, because two XPath expressions in system/core/document.php test a child element instead of an attribute (the @ is missing):
- line 363:
$this->form_element->findOneXPath('input[name=csrfToken]')compares a child elementnamewith a child elementcsrfToken, so it never finds the existing token and always adds one more; - line 510:
findOneXPath(".//ul[class='form-errors']")compares a child elementclass, so it never finds the existing list and adds another one.
Steps to reproduce (fictional test site, main d97ab7b, PHP 8.2). Log in as an administrator and open nl/Start/edit: the page holds name="csrfToken" twice. Both carry the same value, so nothing breaks today, but the form markup is wrong and the second error list can show errors twice.
Proposed fix. input[@name='csrfToken'] and .//ul[@class='form-errors'].
Found while writing known-bug tests for #520.
🤖 Generated with Claude Code
- Ngôn ngữ chính
- JavaScript
- Star
- 5
- Fork
- 9
- Merge trung bình
- 18 giờ 7 phút
- Pull request đã merge (30 ngày)
- 11
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của PlanBCode/hypha
-
Impact: Medium Level: Easy Type: Bug Value: Users
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Impact: Low Level: Easy Pagetype: Festival Type: Bug Value: Coders
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Impact: Medium Level: Easy Pagetype: Mailinglist Type: Bug Value: Users
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 79/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Impact: Medium Level: Easy Type: Bug Usecase: De Stadsbron Value: Visitors
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
PlanBCode/hypha#522 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Impact: Low Level: Easy Type: Enhancement Value: Coders Value: Security
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của PlanBCode/hypha
Issue tương tự
-
admission-deferred priority: medium status: ready work-class: scoped
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
melodic-software/claude-code-plugins#10887 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
-
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 91/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Channel access dropdown: "Private" option is not translated into Japanese in Zulip Server 12Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 2 ngày
-
enhancement ui-dashboard
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày