求教关于PHP 防php防止sql注入代码SQL的问题

求教关于PHP 防注入SQL的问题_百度知道
求教关于PHP 防注入SQL的问题
jpg" />怎样能让这段代码起作用.hiphotos.baidu://c.com/zhidao/pic//zhidao/wh%3D600%2C800/sign=d663c985cbbf6c81f7e9d0d/b17ecadbc28f00a644ada.jpg" esrc="/zhidao/wh%3D450%2C600/sign=b63533faf5e39b2a9de3d129/b17ecadbc28f00a644ada.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http://c.hiphotos.baidu<a href="http://c.hiphotos
提问者采纳
需要在提交表单的页面使用这代码里面对应的某一个函数, 专门对表单提交的数据进行处理的, 表单通常用htmlspecialchars进行过滤或trim或其他这应该是一个函数库. 所以你如果想要里面的代码起作用, 这些都是需要灵活使用的. 并不是生搬硬套.比如进入详细页的时候要将id进行intval过滤
如果不用这个函数库,使用自带的函数,比如addslashes()、mysql_real_escape_string(),可以很好的防止sql注入吗?
他的这个函数库就是用的php系统自带的函数进行封装的,so你直接用php源生的这些函数进行过滤也是可以的。
提问者评价
来自团队:
其他类似问题
为您推荐:
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁网页设计教程与开发
提供各种常见网页效果
提供各种各样的设计教程
装扮QQ,让QQ变得更酷
设计参考,提高自升水平
学习服务器和操作系统
提供各种素材和工具
收藏学习资料
您现在的位置:&&>>&&>>&&>>&&>>&&>>&正文
php简单实现sql防注入的方法
本文实例讲述了php简单实现sql防注入的方法。分享给大家供大家参考,具体如下:
这里没有太多的过滤,主要是针对php和mysql的组合。
一般性的防注入,只要使用php的 addslashes 函数就可以了。
以下是一段copy来的代码:
$_POST = sql_injection($_POST);
$_GET = sql_injection($_GET);
function sql_injection($content)
if (!get_magic_quotes_gpc()) {
if (is_array($content)) {
foreach ($content as $key=&$value) {
$content[$key] = addslashes($value);
addslashes($content);
做系统的话,可以用下面的代码,也是copy来的。
function inject_check($sql_str) {
return eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile', $sql_str);
// 进行过滤
function verify_id($id=null) {
if (!$id) { exit('没有提交参数!'); }
// 是否为空判断
elseif (inject_check($id)) { exit('提交的参数非法!'); }
// 注射判断
elseif (!is_numeric($id)) { exit('提交的参数非法!'); }
// 数字判断
$id = intval($id);
function str_check( $str ) {
if (!get_magic_quotes_gpc()) {
// 判断magic_quotes_gpc是否打开
$str = addslashes($str);
// 进行过滤
$str = str_replace("_", "\_", $str);
// 把 '_'过滤掉
$str = str_replace("%", "\%", $str);
// 把 '%'过滤掉
function post_check($post) {
if (!get_magic_quotes_gpc()) {
// 判断magic_quotes_gpc是否为打开
$post = addslashes($post);
// 进行magic_quotes_gpc没有打开的情况对提交数据的过滤
$post = str_replace("_", "\_", $post);
// 把 '_'过滤掉
$post = str_replace("%", "\%", $post);
// 把 '%'过滤掉
$post = nl2br($post);
// 回车转换
$post = htmlspecialchars($post);
// html标记转换
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php程序设计安全教程》、《php安全过滤技巧总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php操作office文档技巧总结(包括word,excel,access,ppt)》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
转载请注明:破洛洛(谢谢合作)
上一篇文章: 下一篇文章:
网友评论:
[][][][][][][][][][]PHP登录环节防止sql注入的方法浅析
在防止sql注入这些细节出现问题的一般是那些大意的程序员或者是新手程序员,他们由于没有对用户提交过来的数据进行一些必要的过滤,从而导致了给大家测试的时候一下就攻破了你的,下面我们来简单的介绍一个用户登录未进行安全配置可能出现的sql注入方法,下面一起来看看吧。
比如以下一段登录的代码:
if($l = @_connect(&#39;localhost&#39;, &#39;root&#39;, &#39;123&#39;)) or die(&#39;数据库连接失败&#39;);
mysql_select_db(&#39;test&#39;);
mysql_set_charset(&#39;utf8&#39;);
$sql = &#39;select * from test where username = &$username& and password = &$password&&#39;;
$res = mysql_query($sql);
if(mysql_num_rows($res)){
header(&#39;Location:./home.php&#39;);
die(&#39;输入有误&#39;);
注意上面的sql语句,存在很大的安全隐患,如果使用以下万能密码和万能用户名,那么可以轻松进入页面:
$sql = &#39;select * from test where username = &***& and password = &***& or 1 = &1&&#39;;
很明显,针对这条sql语句的万能密码是: ***& or 1 = &1
$sql = &#39;select * from test where username =&***& union select * from users/* and password = &***&&#39;;
正斜线* 表示后面的不执行,mysql支持union联合查询,因此直接查询出所有数据; 所以针对这条sql语句的万能用户名是:***& union select * from users/*
但是,此注入只针对代码中的sql语句,如果
$sql = &select * from test where username = $username and password = $password&;
上面的注入至少已经不管用了,不过方法是一样的;
在使用PDO之后,sql注入完全可以被避免,而且在这个快速开发的时代,框架横行,已然不用过多考虑sql注入问题了。
下面整理了两个防止sql注册函数
/* 过滤所有GET过来变量 */
foreach ($_GET as $get_key=&$get_var)
if (is_numeric($get_var)) {
$get[strtolower($get_key)] = get_int($get_var);
$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);
$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);
另外还有一些博客会这样写
/* 过滤所有GET过来变量 */
foreach ($_GET as $get_key=&$get_var)
if (is_numeric($get_var)) {
$get[strtolower($get_key)] = get_int($get_var);
$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);
$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);
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

我要回帖

更多关于 php防止sql注入的方法 的文章

 

随机推荐