表单将javascript粘贴到db中

时间:2014-06-21 11:02:01

标签: javascript php forms validation symfony

我的行动是将包含JavaScript代码的表单内容写入数据库。如果用户将JavaScript粘贴到我的或不能使其可执行,我怎么能摆脱JavaScript。因为如果我要从数据库中获取并执行回显,则JavaScript正在执行。这当然(取决于行动)是一个主要的安全问题。

例如:粘贴到我的表格&#34;名称&#34;或&#34; textarea&#34;:<s c r i p t> aler..</ s c r i p t >

我的表单如下:

->add('name', 'text', array(
   'constraints' => array(new Length(array('max' => 255, 'maxMessage' => $this->get('translator')->trans('maxlength255.name', array(), 'forms')))),
   'required' => false,
   'attr' => array('oninvalid' => "setCustomValidity('" . $this->get('translator')->trans('oninvalid.name', array(), 'forms') . "')",
      'onchange' => "try{setCustomValidity('')}catch(e){}",
      'placeholder' => $this->get('translator')->trans('placeholder.name', array(), 'forms'),)
))
->add('message', 'textarea', array(
   'constraints' => array(new Length(array('min' => 5,  'max' => 5000, 'maxMessage' => $this->get('translator')->trans('maxlength5000.message', array(), 'forms'), 'minMessage' => $this->get('translator')->trans('minlength5.message', array(), 'forms')))),
   'required' => false,
   'attr' => array('oninvalid' => "setCustomValidity('" . $this->get('translator')->trans('oninvalid.message', array(), 'forms') . "')",
      'onchange' => "try{setCustomValidity('')}catch(e){}",
      'placeholder' => $this->get('translator')->trans('placeholder.message', array(), 'forms'),)
))

如果已经提出问题,我很抱歉,但我无法在stackoverflow上找到它。那么请参考链接!谢谢!

1 个答案:

答案 0 :(得分:1)

这是一种不好的做法,而不是将js代码放在数据库中,将变量信息作为

序列化数据稍后使用循环构建它们......

但是如果你想把它首先转换为使用

的htmlentities

htmlentities(); 功能

检索使用 html_entity_decode(); 功能

解码并获取原始源代码......