请问PHP怎么过滤GET或者POST的参数?防止js注入,或者一些html注入?请请提供代码参考?谢谢!
解决方案 »
- shell中用vi打开一个文件并自动保存
- PHPer学习经验交流,免费提供视频,电子书 ......
- 深入PHP:面向对象、模式与实践(第2 版) 高清PDF版下载
- php session监听
- 几个概念问题,关于PHP和Mysql的,我搞不明白?教我下
- php 时间比较问题,请教
- 求PHP的UML工具
- PHP 使用session对两个不同的服务器网站进行同步登录
- php应该怎么学起?
- 求助大神!windows7下整合apache,mysql和php后导致apache无法启动 非80端口问题
- 哪位写过PHP自动上传本地图片文件到服务器的?
- Parse error: syntax error, unexpected T_IF in 的问题 期望高手解决
addslashes($_GET);
{
/****需要对这几个数组,遍历,注意数组多维的情况,addslashes($str)就可以
$_GET
$_POST
$_COOKIE
$_REQUEST
****/
}
防止js注入,直接把<和>替换了就可以了
if (!get_magic_quotes_gpc()) {
!empty($_POST) && Add_S($_POST);
!empty($_GET) && Add_S($_GET);
!empty($_COOKIE) && Add_S($_COOKIE);
!empty($_SESSION) && Add_S($_SESSION);
}
!empty($_FILES) && Add_S($_FILES);function Add_S(&$array){
if (is_array($array)) {
foreach ($array as $key => $value) {
if (!is_array($value)) {
$array[$key] = addslashes($value);
} else {
Add_S($array[$key]);
}
}
}
}过滤js的,直接把变量内容里的<>替换掉就可以了。不用写在这里面
if (!get_magic_quotes_gpc()){
foreach($_POST as $key => $value){
$_POST[$key] = addslashes($val);
}
foreach($_GET as $key => $value){
$_GET[$key] = addslashes($val);
}
}
?>
foreach ($_GET as $get_key=>$get_var)
{
if (is_numeric($get_var)) {
$get[strtolower($get_key)] = get_int($get_var);
} else {
$get[strtolower($get_key)] = get_str($get_var);
}
} /* 过滤所有POST过来的变量 */
foreach ($_POST as $post_key=>$post_var)
{
if (is_numeric($post_var)) {
$post[strtolower($post_key)] = get_int($post_var);
} else {
$post[strtolower($post_key)] = get_str($post_var);
}
} /* 过滤函数 */
//整型过滤函数
function get_int($number)
{
return intval($number);
}
//字符串型过滤函数
function get_str($string)
{
if (!get_magic_quotes_gpc()) {
return addslashes($string);
}
return $string;
}
echo addslashes($str);
!empty($_POST) && Add_S($_POST);
!empty($_GET) && Add_S($_GET);
!empty($_COOKIE) && Add_S($_COOKIE);
!empty($_SESSION) && Add_S($_SESSION);
}
!empty($_FILES) && Add_S($_FILES);
这段没理解,谁帮忙解释下。
//本人在 TP 框架中的过滤函数。
// Input 类是 TP 提供的。
function inputFilter($content)
{
if(is_string($content) ) {
return Input::getVar($content);
}
elseif(is_array($content)){
foreach ( $content as $key => $val ) {
$content[$key] = inputFilter($val);
}
return $content;
}
elseif(is_object($content)) {
$vars = get_object_vars($content);
foreach($vars as $key=>$val) {
$content->$key = inputFilter($val);
}
return $content;
}
else{
return $content;
}
}
而且这个只能提防sql注入,却又不如mysql_real_escapse_string那样对不同字符集安全.
过滤必须针对你的允许输入范围!
如果只能输入数字的地方,就过滤掉非数字,
只能输入字母的地方,就过滤掉非字母,
.....
$username = mysql_escape_string( trim( $username));
....
$query = "INSERT ...";
...
}