## WEB/APP开发安全

2016-04-26 14:39:10 3793 人阅读

### SQL注入

SQL注入是WEB攻击中最常见的注入方式。也是我们这次被攻击中最多的。

SELECT * FROM user WHERE username='$username' AND password='$password'

SELECT * FROM user WHERE username='vckai' AND password='123456'

SELECT * FROM user WHERE username='vckai' or 1=1--' AND password='123456'

echo trim($str, '、'); 猜下这个会返回什么？“研发、产品”？NO，这个居然很奇怪的返回了“研发、产��”。 难道是我的打开方式不对，怎么会返回乱码呢。 经过一番测试，发现一个很有趣的问题。 <?php echo trim('abacabb', 'ab'); //print 'c' 原本以为这个会返回acabb的，但是居然只返回了c。这就是对trim函数的误解了。 其实这个在官方说明文档的Example是有的，只是我没注意看而已。 分类: PHP 标签: ## swfupload上传失败返回-300, RESIZE_ERROR 2014-07-09 12:50:45 1211 人阅读 上传用的是swfupload插件，今天有几张照片死活传不上去，调试发现返回的errorCode为-300。 找到-300在SWFUpload.UPLOAD_ERROR中的RESIZE，Ps：很奇怪，网上很少看到有-300的错误说明，倒是有ERROR_RESIZE这个变量 RESIZE_ERROR - 当调整图像大小时出现了某错误啊 看到这个提示一头雾水，图片本身是没问题的。用PHP 的GD库是可以裁剪的。 后来将message信息打印出来发现如下：Error generating resized image. Resizing: Error #2015 google 搜索发现这个是flash player的问题： In AIR 1.5 and Flash Player 10, the maximum size for a BitmapData object is 8,191 pixels in width or height, and the total number of pixels cannot exceed 16,777,215 pixels. (So, if a BitmapData object is 8,191 pixels wide, it can only be 2,048 pixels high.) In Flash Player 9 and earlier and AIR 1.1 and earlier, the limitation is 2,880 pixels in height and 2,880 in width. Starting with AIR 3 and Flash player 11, the size limits for a BitmapData object have been removed. The maximum size of a bitmap is now dependent on the operating system. 如上说明，图片的高宽不能超过8191px，然后总的像素值不能超过16777215px，总像素值计算为：height px * width px。 查看了下上传图片的px为：高度：5184px， 宽度：3456px。总像素值：5184*3456 = 17915904，这个值大于了flash player的限制了。 用ps打开图片修改下图片大小为：高度：4984px，宽度：3323px，总像素值：4984*3323= 16561832，刚刚好小于flash player的限制，上传，ok，没问题了。果然是这个限制的问题！ Ps:上面说flash player 11版本已经移除了这个限制，改为根据系统进行限制，但是不知道系统限制是如何计算的。反正我升级为flash player14上传也提示这个错误。 分类: PHP 标签: ## Centos下安装Ice php扩展 2014-06-16 12:49:18 4711 人阅读 安装ICE的方式有两种，一种下载安装包自己编译，一种是通过yum命令进行安装。 因为Ice需要的包比较多，所以编译安装的话比较麻烦，这里我们就只介绍第二种方式，通过yum安装。以下是官方描述： The Ice run times and developer kits for all supported language mappings (i386 and x86_64). You can also install Ice using yum by downloading the repository description (zeroc-ice-amzn1.repo) and installing it in /etc/yum.repos.d. Once installed, you can view the available packages using the following command: # yum list ice* db53* mcpp-devel Refer to the EC2 documentation for more information. 下面开始安装： 分类: PHP 标签: ## 关于PHP使用ICE出现Ice_MemoryLimitException 2014-06-05 07:03:44 2748 人阅读 场景：使用ICE做中间件，C++做服务端，PHP做客户端。 由于某个接口的传输数据过大，接口异常：Ice_MemoryLimitException搜索了下是由于Ice的默认传输大小是1MB，最大可以设置为2G。 很明显我们传输的数据超过了1M。找到问题那就好办了，设置下Ice.MessageMaxSize即可，找到PHP.ini加上这面这句话： ice.options="--Ice.MessageSizeMax=2048" 重启php-fpm，在phpinfo中查看确实是生效了。本以为这样就解决了。 但是刷新页面，异常依旧，Google了下，发现C#或者python都可以在代码中设置MessageSizeMax参数。想到PHP应该也可以直接在代码中设置。 分类: PHP 标签: ## [转] phpredis扩展的下载地址 2014-05-16 09:59:39 1373 人阅读 phpredis是个人觉得最好的一个php-redis客户端，因为其提供的function与redis的命令基本一致，降低的了学习成本，同时功能也很全面。 一。linux安装方法 phpredis下载地址：https://github.com/nicolasff/phpredis unzip phpredis-master.zip cd phpredis-master /usr/local/php5/bin/phpize ./configure --with-php-config=/usr/local/php5/bin/php-config make make install vi /usr/local/php5/etc/php.ini 加入 extension=redis.so 保存后重启Apache，如果是连接的nginx，则需要重启php-fpm。 二。windows安装方法 从网上直接下载编译好的dll文件即可，一定要选择和php对应的版本。 php_redis-5.5-vc11-ts-x86-00233a.zip http://d-h.st/4A5 php_igbinary-5.5-vc11-ts-x86-c35d48.zip http://d-h.st/QGH php_redis-5.5-vc11-nts-x86-00233a.zip http://d-h.st/uGS php_igbinary-5.5-vc11-nts-x86-c35d48.zip http://d-h.st/bei php_redis-5.5-vc11-ts-x64-00233a.zip http://d-h.st/1tO php_igbinary-5.5-vc11-ts-x64-c35d48.zip http://d-h.st/rYb php_redis-5.5-vc11-nts-x64-00233a.zip http://d-h.st/N0d php_igbinary-5.5-vc11-nts-x64-c35d48.zip http://d-h.st/c1a 下载后将php_igbinary.dll和php_redis.dll放入php的ext目录下， 然后修改php.ini，加入这两个扩展，注意顺序不要反了。 extension=php_igbinary.dll extension=php_redis.dll 注：之前版本的不需要安装igbinary, 所以第一次安装的时候我没下载，导致php扩展加载失败。 重新启动Apache即可。 转载地址：http://www.iteye.com/topic/1132714 分类: PHP 标签: ## imagepng压缩等级(quality) 2014-05-06 16:01:51 3476 人阅读 bool imagepngresource $image [, string $filename [, int $quality ]] )

Compression level: from 0 (no compression) to 9.

imagepng($img,null,0); --> Size = 225K imagepng($img,null,1); --> Size = 85.9K
imagepng($img,null,2); --> Size = 83.7K imagepng($img,null,3); --> Size = 80.9K
imagepng($img,null,4); --> Size = 74.6K imagepng($img,null,5); --> Size = 73.8K
imagepng($img,null,6); --> Size = 73K imagepng($img,null,7); --> Size = 72.4K
imagepng($img,null,8); --> Size = 71K imagepng($img,null,9); --> Size = 70.6K

The result seems accurate since 0 means no compression

quality Compression level: from 0 (no compression) to 9.

It's normal for the 0ed file to be larger than the original (that can be slightly compressed to begin with). You need to understand file compression and PHP GD image constructor.