3
A
回答
17
如果你指的是使用input
方法,是的,你可以在技术上开拓system/libraries/Input.php
,低着头此代码:
/**
* Clean Input Data
*
* This is a helper function. It escapes data and
* standardizes newline characters to \n
*
* @access private
* @param string
* @return string
*/
function _clean_input_data($str)
{
if (is_array($str))
{
$new_array = array();
foreach ($str as $key => $val)
{
$new_array[$this->_clean_input_keys($key)] = $this->_clean_input_data($val);
}
return $new_array;
}
// We strip slashes if magic quotes is on to keep things consistent
if (get_magic_quotes_gpc())
{
$str = stripslashes($str);
}
// Should we filter the input data?
if ($this->use_xss_clean === TRUE)
{
$str = $this->xss_clean($str);
}
// Standardize newlines
if (strpos($str, "\r") !== FALSE)
{
$str = str_replace(array("\r\n", "\r"), "\n", $str);
}
return $str;
}
,并在之后的XSS干净,你可以把你自己的过滤功能,像这样:
// Should we filter the input data?
if ($this->use_xss_clean === TRUE)
{
$str = $this->xss_clean($str);
}
$str = strip_tags($str);
但这意味着每次更新CodeIgniter时,都必须重新进行此更改。此外,由于这在全球范围内完成了这一切,所以如果您获得的价值是数字,那么它就没有意义。由于这些原因
现在一个替代的解决方案,你可以使用CodeIgniter Form Validation库,它让你设置字段的自定义规则,包括PHP函数,可以接受一个参数,如strip_tags
:
$this->form_validation->set_rules('usertext', 'User Text', 'required|strip_tags');
我不确定情况是什么,所以我会让你决定采取哪条路径,但总的来说,我建议在每个案例的基础上处理数据验证,因为在大多数情况下,验证数据是唯一的。
2
这是我用的时候我想消除XSS,HTML和仍然保留用户的帖子内容(甚至是恶意代码的尝试)
private function stripHTMLtags($str)
{
$t = preg_replace('/<[^<|>]+?>/', '', htmlspecialchars_decode($str));
$t = htmlentities($t, ENT_QUOTES, "UTF-8");
return $t;
}
第一个正则表达式删除具有HTML格式和ヶ辆一切照顾报价和东西。 每次你需要清理干净的东西时,在你的控制器上使用它。快速和简单。
例如,这个非常恶意的海峡有很多代码标签和东西
Just another post (http://codeigniter.com) blablabla text blabla:</p>1 from users; update users set password = 'password'; select * <div class="codeblock">[aça]<code><span style="color: rgb(221, 0, 0);">'username'</span><span style="color: rgb(0, 119, 0);">); </span><span style="color: rgb(255, 128, 0);">// filtered<br></span><span style="color: rgb(0, 0, 187);">- HELLO I'm a text with "-dashes_" and stuff '!!!?!?!?!$password </span></span>
<确定。 >
变为
Just another post (http://codeigniter.com) blablabla text blabla:1 from users; update users set password = 'password'; select * [aça]'username'); // filtered- HELLO I'm a text with "-dashes_" and stuff '!!!?!?!?!$password <ok.>
它仍然有代码,但不会在你的数据库做任何事情。 使用它像
$this->stripHTMLtags($this->input->post('html_text'));
你可以把这个函数库里面,所以你不必砍CI :)
相关问题
- 1. 删除html标签
- 2. 删除HTML标签
- 3. 删除HTML标签
- 4. 删除HTML标签
- 5. 用PHP解析HTML不会删除所有的html标签?
- 6. 如何删除除img以外的所有html标签?
- 7. JQUERY:如何删除除BR和IMG所有的HTML标签DIV
- 8. 网址标签内删除HTML标签
- 9. 删除带有文字的HTML标签
- 10. enlive删除html标签
- 11. php json_decode删除html标签
- 12. HTML DOM删除标签
- 13. PHP - 删除HTML标签
- 14. 从textarea删除HTML标签
- 15. Jsoup只删除html标签
- 16. 删除特定HTML标签
- 17. 删除所有非br和span标签?
- 18. 删除所有空p标签
- 19. 删除所有<a>标签
- 20. 如何删除所有标签?
- 21. 的jQuery删除所有的HTML标签EXCEPT锚
- 22. 正则表达式来删除所有空的HTML标签
- 23. 删除所有的HTML标签,并限制字母PHP的
- 24. 如何删除所有换行符在html标签之外
- 25. 如何从下载页面中删除所有html标签
- 26. 隐藏(而不是删除)所有的HTML标签 - jQuery的
- 27. 从HTML字符串中删除所有的div标签
- 28. 如何从django模板中删除所有的html标签?
- 29. 如何删除HTML标签的所有属性
- 30. 删除Python中两个html标签之间的所有数据
林不知道我能投了这个足以做到公正。谢谢你的回答和笑声! – neolaser 2011-05-14 06:09:41
+1代言人猫 – CyberJunkie 2012-08-31 04:07:12
你不应该使用strip_tags。它完全删除了标签。即用户没有得到与他输入相同的输出,而是使用htmlspecialchars。它会给用户相同的输出,但会使其无害。 – ANTARA 2016-06-21 11:59:04