是否有一个catchall函数适用于清理SQL注入和XSS攻击的用户输入,同时仍允许某些类型的html标记?
我已经使用PHP一段时间了,我开始问自己,我是否养成了良好的习惯.
其中一个是我所相信的,包括过度使用PHP清理方法,例如,一个用户通过表单注册,我得到以下帖子变量:
$_POST['name'],$_POST['email']和$_POST['captcha'].现在,我通常做的事情显然是清理我要放入MySQL的数据,但是在比较验证码时,我也会对它进行清理.
因此我相信我误解了PHP消毒,我很好奇,除了使用它在MySQL中放置东西之外,还有其他任何需要消毒数据的情况(注意我知道还需要消毒以防止XSS攻击).此外,我的习惯是消毒几乎所有来自用户输入的变量,一个糟糕的变量?
我目前正在使用以下函数来清理我的$ _POST和$ _GET反对SQL注入.不幸的是,我不能通过它发布代码,例如:" <a href test".Twitter如何做到这一点?
function _secinput($variable)
{return filter_var(mysql_real_escape_string($variable), FILTER_SANITIZE_STRING); }
Run Code Online (Sandbox Code Playgroud)
另外,任何人都可以告诉我是否可以通过任何方式改进它?
可能的重复:
PHP:最终的清洁/安全功能用PHP 清理
用户输入的最佳方法是什么?
我应该在我的函数中添加什么来确保传递它的每个字符串都是"服务器友好的"?我使用这个小函数来检查包含名称,电子邮件地址和ID的输入.
function checkInput($str) {
$str = @strip_tags($str);
$str = @stripslashes($str);
$str = mysql_real_escape_string($str);
return $str;
}
Run Code Online (Sandbox Code Playgroud)