WordPress.org

Make WordPress Core

Opened 5 years ago

Last modified 4 months ago

#12056 new enhancement

target="_blank" being stripped from Profile Bio and Category Description

Reported by: lovewpmu Owned by:
Milestone: Future Release Priority: normal
Severity: normal Version: 2.9.2
Component: Formatting Keywords: gsoc kses
Focuses: Cc:

Description

Many apologies if this is a duplicate. I have searched but did not find it yet posted.

I noticed that target="_blank" is being stripped from my "a href" tags my profile "Biographical Info" field even though the "a href" with the URL and closing tag still remain. It happens every time I save my profile.

This was independently verified.

It is a regular wordpress install running 2.9.1 (not wordpressmu, etc.).

My original thread can be found here:
http://wordpress.org/support/topic/355388?replies=1

Attachments (1)

12056.diff (324 bytes) - added by nofearinc 18 months ago.
sample target addition to $allowedtags

Download all attachments as: .zip

Change History (13)

comment:1 @miqrogroove5 years ago

The target attribute is still valid as of XHTML 1.0 Transitional, but you will probably have to use onclick instead. Probably neither are allowed to non-administrators.

comment:2 @lovewpmu5 years ago

there is no reason why someone who is filling out their bio with links to the relevant online info should need to code in javascript. in fact, most people using wordpress -- ie. the common user -- probably cannot. i believe the links on the HTML generated for posts, _blank is used for the "Open in New Window" option.

this should be standardized and completely independent from whether one is or is not an administrator.

comment:3 @miqrogroove5 years ago

It does seem to be using the same filters for admins. That's a bit surprising.

comment:4 @miqrogroove5 years ago

It's set up as a default filter for pre_user_description so you could override that with a plugin.

You might have a case for enabling unfiltered bios for administrators, but beyond that I think the "it's allowed in posts" argument isn't going to fly. WordPress explicitly filters bios the same way as comments instead of posts.

comment:5 @nacin5 years ago

  • Milestone changed from 2.9.2 to Future Release

comment:6 @bsutcliffe5 years ago

  • Cc bsutcliffe added
  • Keywords html strip profile bio category description link target added
  • Summary changed from target="_blank" being stripped from Profile Bio to target="_blank" being stripped from Profile Bio and Category Description
  • Version set to 2.9.2

This also occurs in category descriptions. If I add a link to one of my category descriptions and specify target="_blank", the target reference gets stripped out when saving. Unlike bios, this filter definitely should not be applied.

comment:7 @bsutcliffe5 years ago

  • Cc bsutcliffe removed
  • Keywords html strip profile bio category description link target removed

comment:8 @wojtek.szkutnik5 years ago

  • Keywords gsoc added

comment:9 @sjefen64 years ago

Images, lists and class specifications are also being stripped away from category descriptions. What is the reasoning for being so strict with category descriptions?

@nofearinc18 months ago

sample target addition to $allowedtags

comment:10 @nofearinc18 months ago

Adding the target to the anchor array of $allowedtags would solve that globally in kses.php after the default filters are applied in default-filters.php, but I guess there might be a security risk with adding a frame target to external location? I've uploaded a sample proof of concept above.

Not sure if there is a way to globally allow a given value for an attribute in $allowedtags.

comment:11 @nacin16 months ago

  • Component changed from General to Formatting
  • Type changed from defect (bug) to enhancement

This is "intentional" but we may be able to fix this now. kses can now make changes based on a particular filter. Otherwise changing $allowedtags would open this up for comments.

comment:12 @miqrogroove4 months ago

  • Keywords kses added
Note: See TracTickets for help on using tickets.