Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6189415
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 24, 20262026-05-24T02:24:41+00:00 2026-05-24T02:24:41+00:00

One of the things I like with cakePhp, is that we can easily have

  • 0

One of the things I like with cakePhp, is that we can easily have a generated edited form which allows us to save.

E.g. in a controller:

function add() {
        if (!empty($this->data)) {
            $this->Post->create();
            if ($this->Post->save($this->data)) {
                $this->Session->setFlash(__('The post has been saved', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The post could not be saved. Please, try again.', true));
            }
        }
        $users = $this->Post->User->find('list');
        $this->set(compact('users'));
    }

The problem with that is that our fields are vulnerable to XSS (Cross site scripting). I’m aware of the “Sanitize::Clean” way, but I’ve a problem with that: it’s mean that we have to do this on all fields before with save the object. And what if once we add one field? We should go on all our code to check that we sanitize it?? Is there any way to say “Sanitize this object before save it”, without specifing any fields?

Thank you!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-24T02:24:42+00:00Added an answer on May 24, 2026 at 2:24 am

    You can look at beforeSave() method for models

    http://book.cakephp.org/view/1052/beforeSave

    the data submitted is available in $this->data[$this->alias] array, so you could

    foreach($this->data[$this->alias] as $k => $v) {
       $this->data[$this->alias][$k] = Sanitize::clean($v);
    }
    

    Usually you want to store whatever submitted by the user in the database and only sanitize it when you need to display it, that way you still preserve the original HTML content (if it indeed is intended to be an HTML input (for instance: blog post)).

    If you want to Sanitize before displaying, you could do it using afterFind() so you don’t have to call Sanitize everytime.

    http://book.cakephp.org/view/1050/afterFind

    function afterFind($results, $primary) {
       $toSanitize = array('field1', 'field2', 'field4');
       if(!empty($results[0])) {
          foreach($results as $i => $res) {
             foreach($toSanitize as $ts) {
                if(!empty($res[$this->alias][$ts])) 
                   $results[$i][$this->alias][$ts] = Sanitize::clean($res[$this->alias][$ts]);
                }
             }
          }
       } else {
    
         foreach($toSanitize as $ts) {
            if(!empty($results[$ts])) 
               $results[$ts] = Sanitize::clean($results[$ts]);
            }
         }
       }
    
       return $results;
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have one application that allows user to do various things like rotating and
I've downloaded a utility called PrintShare which allows one to print things like web
I have some component code that I'd like to in a CakePHP Task, but
One of the things I like the most of JavaScript is that the logical
I use VSTO Excel template based solutions frequently. One of the things I like
One of the first things I like to do when I make a site
One of the things I would like to follow is to stick to the
One thing I have continually found very confusing about using an object database like
I have an enumeration for my Things like so: public enum Things { OneThing,
i notice one nice things that a amazon provide that is load pdf data

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.