我的行动是将包含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上找到它。那么请参考链接!谢谢!
答案 0 :(得分:1)
这是一种不好的做法,而不是将js代码放在数据库中,将变量信息作为
序列化数据稍后使用循环构建它们......
但是如果你想把它首先转换为使用
的htmlentitieshtmlentities(); 功能
检索使用 html_entity_decode(); 功能
解码并获取原始源代码......