https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=30144
--- Comment #47 from Martin Renvoize (ashimema) <[email protected]> --- Created attachment 203191 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=203191&action=edit Bug 30144: (QA follow-up) Fix stored XSS in servicing instructions The RM's review found two stored XSS vectors in the servicing instruction free-text (LVT) handling: 1. neworderempty.tt embedded the servicing instruction JSON (and the EDIFACT_SI authorised values list) directly into an inline <script> block via JSON.parse('[% ... | $raw %]'). TT's html filter does not escape single quotes, so a free-text value like test' + alert(1) + ' broke out of the JS string literal and executed on the next page load of the edit form. 2. basket.pl built the "Servicing instruction" column display by concatenating raw LVC/LVT values with '<br>' and rendering the result with | $raw in basket.tt, so HTML/script content in a free-text value executed directly on the basket page. Fix the first by moving the JSON into existing/new hidden input value="" attributes (escaped with the html filter, which is safe for double-quoted HTML attributes) and reading them back via jQuery's .val() before JSON.parse(), instead of interpolating untrusted data into a JS string literal. Fix the second by passing the display parts to the template as a list and escaping each with the html filter at render time, instead of building a pre-escaped raw HTML string in Perl. -- You are receiving this mail because: You are watching all bug changes. _______________________________________________ Koha-bugs mailing list -- [email protected] To unsubscribe send an email to [email protected] website : http://www.koha-community.org/ git : http://git.koha-community.org/ bugs : http://bugs.koha-community.org/
