Post’s metadata can not and should not be used for validation. They can be easily manipulated. Post metadata simply stores “editable” strings or arrays, nothing more than that.
The code you have copied is trying to fetch a metadata and check if its value is mp3
. You can change a value of exe
to mp3
, and it will assume that the file is mp3. So, security issue here.
To validate a file truly, you have to pass the files path or URL to a real validator.
For example, WordPress offers this function to validate an image:
file_is_valid_image( $path );
Which returns true is the file in the pass is a real image. There are function to retrieve the file’s real extension (since it can easily be manipulated, change .exe to .jpg), which you can find them by a simple search.
Related Posts:
- Can I exclude a post by meta key using pre_get_posts function?
- What is the index [0] for on post meta fields?
- Best way to programmatically remove a category/term from a post
- Custom field metabox not showing in back-end
- So much data in postmeta
- How to hide meta box values from custom fields list?
- get_post_meta() unserialize issue – returns boolean(false)
- What is the advantage of the wp_options design pattern?
- display specific custom fields
- Meta keywords and descriptions plugin for manually editing meta for each page/post
- Multiple meta values for same meta_key adding on “Preview Changes” hit but not on saving or updating post
- Transients vs CRON +Custom Fields: Caching Data Per Post
- Unable to save datetime custom meta field using update_post_meta() function
- Up/Down voting system for WordPress
- post meta data clearing on autosave
- Create custom field on post draft or publish?
- Display info from custom fields in all images’ HTML
- get_post_meta fields don’t show up on posts page
- Update meta values with AJAX
- copy attachments to another post type and change attachment url
- Cannot edit post meta fields with rest API
- Add a post meta key and value only if it does not exist on the post
- Custom fields to save multiple values
- Function to change meta value in database for each post
- Get aggregate list of all custom fields for entire blog
- wp_handle_upload error “Specified file failed upload test” but still creates attachment?
- Which is best in the following scenario : post_meta vs custom table vs parent/child posts
- Saving custom image meta fields
- using multiple meta_key and meta_value in query_posts
- Adding custom fields (post meta) before/during wp_insert_post()
- Get specific custom field keys from a post and put into an array
- MySQL Query that looks for post with Custom Field, then changes Category
- ACF: How to get the full field name (meta_key) by a field key?
- post meta getting deleted on save
- How to add a new meta key and assign timestamp to posts
- If meta key exists in get posts function otherwise create it
- Custom field not updating when value is empty
- meta_compare seems to be treating values as strings instead of integers as expected
- Limit the number of acf content when displaying in post loop [closed]
- Read / Watch / Listen times – meta
- How to add custom metadata text box dropdown to sidebar in Gutenberg editor for all post types
- How do I Implement Atomic Update of Post Metadata?
- How do I have WP_Query match posts based on search parameter OR meta fields? (rather than search parameters AND meta fields)?
- Why is my Custom Meta Box Field Inputs NOT saving?
- Get registered custom fields or post meta even if empty
- Displaying multiple URLs as custom field values
- Show values of custom post meta on ‘Add new post’ page?
- Custom post meta field effect on the performance on the post
- Limits, not all post are showen when querying for posts by view count
- Display Custom Meta Box Field Only If Value is Present
- Stop sending email everytime I updates my post
- Best way to store everyday post views?
- shortcode in a custom metabox
- Unable to get specific value from post meta
- Problem with saving large amount of data in postmeta/usermeta
- Custom meta is not being saved
- How to get posts with a metadata numeric key greater than X?
- IF Custom field value equals ZERO
- How to use media upload on metabox post page without breaking TinyMCE?
- Let’s Create Custom Field Template Documentation
- Branch made by several custom values
- Looping inside block return
- WordPress creates new lines in postmeta table on post update
- User customising position of WordPress Featured Image
- Can I save post meta programatically without setting metaboxes?
- Insert image into sub-field with update_post_meta
- How to use conditional statement with custom field
- Meta box values are displayed on Custom Fields list. Is it possible to hide them?
- If metabox has content display content
- Best way to achieve multiple links in a post title
- Display Meta Data with HTML?
- How can I add/update post meta in a admin menu page?
- Get author total post votes from post meta
- Group Posts By Custom Meta Value: Date
- custom filed from post in the side bar
- Meta field bulk editing no longer working in WP 6.0 [closed]
- How to display custom fields in hestia theme
- How to speed up post list slowed by update_meta_cache()?
- WordPress Blocks, setAttributes not saving
- SQL query to change the value of a Custom Field
- Custom meta POST request fired twice when updating a post in Gutenberg
- Add custom field information to source meta data
- Update custom field on page specific to logged in user
- Save, update, get and sanitize post meta as HTML not plain
- Create Meta boxes dynamically
- Saved Post Meta Array Returns as String
- Delete custom meta
- Problem saving meta data
- Check if value exists before saving
- Get meta value when the page is a blog archive
- change attachment custom field onChange event
- wordpress simple post multi rating with post_meta and user_meta
- wp_postmeta are updated for only one page
- Custom fields / meta box output
- Make Custom Fields Public in JSON – API
- Colecting values from custom field checkboxes and displaying them in the post
- Build Array from Input Fields question
- Order by a meta field in query loop
- How can i put a custom field inside this php
- Site uses wpdb to fetch meta_keys but just displays first meta_key from a page (the post uses the same meta_key “filmmaker” more than once)