• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP防止注入攻击实例分析_PHP

php 搞代码 3年前 (2022-01-25) 24次浏览 已收录 0个评论

本文以实例形式详细分析了PHP防止注入攻击的方法。分享给大家供大家参考。具体分析如下:

代码如下:

<?php<br />$str = "Who's John Adams?";<br />echo $str . " This is not safe in a database query.<br />";<br />echo addslashes($str) . " This is safe in a database query.";<br />?>

输出:
Who’s John Adams? This is not safe in a database query.
Who\’s John Adams? This is safe in a database query.

代码如下:

function html($str)<br />{<br />     $str = get_magic_quotes_gpc()?$str:addslashes($str);<br />     return $str;<br />}

get_magic_quotes_gpc:
取得 PHP 环境变数 magic_quotes_gpc 的值。
语法: long get_magic_quotes_gpc(void);
传回值: 长整数
函式种类: PHP 系统功能

内容说明:

本函式取得 PHP 环境设定的变数 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。传回 0 表示关闭本功能;传回 1 表示本功能开启。当 magic_quotes_gpc 开启时,所有的 ‘ (单引号), ” (双引号), \ (反斜线) and 空字符会自动转为含有反斜线的溢出字符。

代码如下:

$str = "Is your name O'reilly?";<br />// 输出:Is your name O\'reilly?<br />echo addslashes($str);<br />?><br />get_magic_quotes_gpc()

本函数取得 PHP 环境配置的变量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。返回 0 表示关闭本功能;返回 1 表示本功能打开。当 magic_quotes_gpc 打开时,所有的 ‘ (单引号), ” (双引号), \ (反斜线) and 空字符会自动转为含有反斜线的溢出字符。

magic_quotes_gpc

对于 php.ini 中的 magic_quotes_gpc,是设置为 off 还是为 on 呢?

个人观点,应该设置为 on

总结如下:

1. 对于magic_quotes_gpc=on的情况,

我们可以不对输入和输出数据库的字符串数据作
addslashes()和stripslashes()的操作,数据也会正常显示。

如果此时你对输入的数据作了addslashes()处理,
那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。

2. 对于magic_quotes_gpc=off 的情况

必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出
因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行。

补充:

magic_quotes_gpc 作用范围是:WEB客户服务端;作用时间:请求开始时,例如当脚本运行时.
magic_quotes_runtime 作用范围:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的;作用时间:每次当脚本访问运行状态中产生的数据

代码:

<?php  <br />/* <br />有时表单提交的变量不止一个,可能有十几个,几十个。那么一次一次地复制/粘帖addslashes(),是否麻烦了一点?由于从表单或URL获取的数据都是以数组形式出现的,如$_POST、$_GET)那就自定义一个可以“横扫千军”的函数 <br />*/  <br />function quotes($content)  <br />{  <br />//如果magic_quotes_gpc=Off,那么就开始处理  <br />if (!get_magic_quotes_gpc()) {  <br />//<strong style="color:transparent">来2源gaodaima#com搞(代@码&网</strong><label>搞gaodaima代码</label>判断$content是否为数组  <br />if (is_array($content)) {  <br />//如果$content是数组,那么就处理它的每一个单无  <br />foreach ($content as $key=>$value) {  <br />$content[$key] = addslashes($value);  <br />}  <br />} else {  <br />//如果$content不是数组,那么就仅处理一次  <br />addslashes($content);  <br />}  <br />} else {  <br />//如果magic_quotes_gpc=On,那么就不处理  <br />}  <br />//返回$content  <br />return $content;  <br />}  <br />?>

希望本文所述对大家的PHP程序设计有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP防止注入攻击实例分析_PHP

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址