1. PHP怎么过滤GET或者POST的参数怎么样才能保证代码不被注入
//本人在抄 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; }}
2. php获取url参数
1、在当前网页echo出变量$_SERVER['HTTP_HOST']即可获取域名或主机地址。
3. php url 参数会重复,怎么处理重复url参数,谢谢
重复是你自己加的<a href="<?=$url?>&id=6">菜单1</a>
这样写吧你
<?php$get=array_unique($_GET);
//$get['newparam']='new_value';
isset($get['id'])&&unset($get['id']);
$query=http_build_query($get);
$url="?".$query;
echo$url;
?>
<div>
<ahref="<?=$url?>&id=6">菜单1</a>
<ahref="<?=$url?>&id=7">菜单2</a>
<ahref="<?=$url?>&id=8">菜单3</a>
</div>
或者
<?php$get=array_unique($_GET);
//$get['newparam']='new_value';
?>
<div>
<ahref="?<?phpechohttp_build_query(array_merge($get,array('id'=>6)));?>">菜单1</a>
<ahref="?<?phpechohttp_build_query(array_merge($get,array('id'=>7)));?>">菜单2</a>
<ahref="?<?phpechohttp_build_query(array_merge($get,array('id'=>8)));?>">菜单3</a>
</div>
4. 请问PHP怎么过滤GET或者POST的参数防止js注入,或者一些html注入请请提供代码参考谢谢!
string mysql_real_escape_string ( string unescaped_string [, resource link_identifier])
本函数将来 unescaped_string 中的特殊字符自转义,并计及连接的当前字符集,因此可以安全用于 mysql_query()。
注: mysql_real_escape_string() 并不转义 % 和 _。
例子 1. mysql_real_escape_string() 例子
<?php
$item = "Zak's and Derick's Laptop";
$escaped_item = mysql_real_escape_string($item);
printf ("Escaped string: %s\n", $escaped_item);
?>
以上例子将产生如下输出:
Escaped string: Zak\'s and Derick\'s Laptop
5. php中数据过滤的问题
我来解释一下吧
preg_replace('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','',$string);
去掉控制字符,你google一下ascii table就知道了,php里面 - 代表范围,比如\x00-\x08指的是ASCII代码在\x00到\x08范围的字符,\x0A和\x0D代表回车换行,所以没包含在这个里面,否则直接\x00-\x1F了,
$string = str_replace(array("\0","%00","\r"),'',$string);
\0表示ASCII 0x00的字符,通常作为字符串结束标志
$string = preg_replace("/&(?!(#[0-9]+|[a-z]+);)/si",'&',$string);
我们知道HTML里面可以用xx;来对一些字符进行编码,比如 (空格), ߷ Unicode字符等,A(?!B) 表示的是A后面不是B,所以作者想保留 ߷类似的 HTML编码字符,去掉其他的问题字符,比如 &123; nbsp;
str_replace(array("%3C",'<'),'<',$string);
第一个'<'多余吧,%3C是编码以后的 <, 一般用在URL编码里
str_replace(array("%3E",'>'),'>',$string);
str_replace(array('"',"'","\t",' '),array('"',"'",'',''),$string);
略过
有问题再追问
6. php 怎么过滤后url后面的缀名
$_GET['id']='sdfsf.5.jpg';
$new_str= strrev($str);
$new_str1=substr($new_str,strpos($new_str, ".")+1);
echo strrev($new_str1)
7. php如何向JavaWeb一样定义过滤器
$url = $_SERVER["PHP_SELF"];
$url = substr($url,strlen($url)-8,2);
//echo $url;
if(($_SERVER["PHP_SELF"] == '/miaomi/index.php/Index/login')||($_SERVER["PHP_SELF"] == '/miaomi/index.php')||$url=='In')
{
}
else{
SESSION_START();
if((!isset($_SESSION['username'])))
{
echo "<script language='javascript'>window.location.href='/miaomi/index.php';</script>";
}
8. php 纯数字url参数安全过滤代码
标准答案我就不知道了,只是我个人的理解大概是这个方面要注意:
1 [POST/GET]页面参数传值/字符串输入/数据入库等类似动作都要做好严格的危险字符过滤处理.
2 相关PHP的I/O操作,需要注意限制权限,文件名或目录名或内容都要做好过滤处理.
3 敏感信息(如PASSWORD/银行帐号等)不要依赖COOKIE,SESSION,最好读表,并尽量缓存读表数据.
4 注意对网站根目录及下面所有子目录及文件的权限控制与保护,不要让配置文件/系统信息等文件暴露.
5 要完全屏掉所有出错提示,或者能捕获所有出错并重新定制输出,以防报错信息泄露你的网站及相关文件路径,MYSQL字段/网站环境等.
6 所有对库表的写入与读取操作都需要做好访问来路限制/同IP同内容读写间隔限制/并验证POST与GET的指定标识KEY的有效性等这些安全动作.
7 有类似文件下载/或文本流下载等功能的,尽量不要在URL里面直接调用目标文件地址的方式来做,最好是传ID或是指定的NAME标识.
8 MYSQL 的用户最好分开,不要用ROOT用户来连接MYSQL,另建专用用户,并限制死此用户的权限,只能操作指定的库,最好去掉此用户的命令行导入导出的权限等这些危险的权限.