PHP安全(一)
来源:互联网 发布:在线手机小号软件 编辑:程序博客网 时间:2024/04/30 04:31
TNND.整了两次结果还是没保存,第二次竟然还没提示出错。害我复制了其他的东西。白写了!这BLOG也真...
这几天看了几篇关于安全的文章,消化理解了下,整理了如下笔记,希望能加深印象。
首先要说的是"注入"。主要是用户输入不是我们所期待的值,因此造成意想不到的收获。
1、SQL注入。一下是最常见的一个例子:
SELECT * FROM users WHERE name='$username' AND pass='$password';
结果当$password = ' OR '1'='1 时,该SQL就变成
SELECT * FROM users WHERE name='known_user' AND pass='' OR '1'='1';
该SQL将会把USERS的表记录全部查询,这样USER就可以饶过该验证进入下一关。
当然我们有很多方法在验证用户合法性上,这里主要要说的是输入,而不是验证。
就是因为USER随意输入了',"等会在一般情况下会造成系统困惑的符号而造成的。所以我们需要针对这类问题进行
相应的处理。
PHP提供了addslashes函数可对输入进行转义,例如'变成/',"变成/";同时PHP.INI也有个魔术常量可达到相同的
效果,magic_qutoes_gpc,该常量在目前版本默认是On,也就是说默认是可进行转换的。但这个会造成一个问题
就是当我们不需要进行转换的时候,它还是执行了转换。所以有时候我们会把它设置为Off,或者通过如下代码进行
控制。
[code]
if (get_magic_quotes_gpc()){
$_GET = array_map('stripslashes', $_GET);
$_POST = array_map('stripslashes', $_POST);
$_COOKIE = array_map('stripslashes', $_COOKIE);
}
[/code]
先判断该常量是否打开,如果是通过array_map函数,调用stripslashes函数对数组进行转换。转换完后,我们再
对这几个数组的值进行必要的转义。具体采用哪一种可自行决定。
- PHP 安全(一)
- PHP安全(一)
- PHP 性能优化安全一
- PHP 安全 (1)
- PHP安全(2)
- PHP安全(2)
- PHP 安全 (1)
- PHP 安全 (2)
- PHP安全(二)
- PHP安全(三)
- 确保 PHP 应用程序的安全一
- Java安全(一)
- java 安全(一)
- 安全编码(一)
- 线程安全(一)
- 信息安全(一)
- 安全测试(一)
- iOS 安全(一)
- 玩玩Spring之struts+hibernate+spring添删改查示例
- 多级树行控件加载
- 一个验证身份证号码的javascript函数
- 使用AJAX异步获取数据
- eclipse中如何写一个测试私有方法的junit?
- PHP安全(一)
- 应用XMLHTTP的SVG小例子
- 3D开端 RayCasting
- snmp协议
- 虚拟路径映射到另一个应用程序,这是不允许的。
- eclipse的源代码搜索插件
- 060803
- ISBN从10位升为13位,执行日期为2007年1月1日
- 使用JavaScript和Ajax发出异步请求