网络安全的残酷现实,我就不多说了。写出合格的代码的人才是合格的程序员。合格的代码无非三点:安全,效率,维护性。
安全当然要排第一位,一个错误百出的程序,再快在帅都是没有用的。效率可以优化,维护性可以通过不断的重构来解决。
这里我就只关注安全性了。
PHP也学了2个多月了。做了一个信息管理系统,作为我的第一个学习研究项目。PHP在服务器端做webservice,客户端HTML+JS通过POST json来和服务器通信和交互。
对于客户端输入,虽然我做了各种过滤处理,但还是心理不踏实。没有一个系统的防护方案,出了问题都不知道怎么解决,一个一个查是很不靠谱的。
所以写这篇文章给自己理理思路。
1.定义暴漏给外部的资源,客户端只能访问允许访问的资源
针对web的资源请求都是url来完成的。这是网络程序要处理的第一步。我们要做的就是明确定义私有资源和公有资源。私有资源不允许URL访问。只对客户端开放与服务有关的接口,必须访问的资源。暴漏的接口越少,越安全。
比如说,我的程序只对客户端暴漏一个接口,就是service.php。那么多有对别的路径的访问就都是非法的。
2.定义所有接口的参数,并做严格的检查
既然有了公有资源,那么针对每一个公有资源,都要明确其提供的服务和相应参数。服务就是说这个资源提供什么功能给客户端,比如返回当前所有文章名。参数规定了这个资源允许的参数名,参数意义,参数类型,参数允许的字符集合(包含两层意思,第一字符集编码unicode或者ansi或者gbk,第二允许的字符,比如数字,字母)。
3.不能让客户端看到任何不友好的错误信息
不友好的错误信息,在我理解,其实就是指那么不是我的代码抛出的错误。比如,运行期间mysql执行抛出一个错误,直接显示到客户端,这不是直接告诉客户端电脑前的人,服务器端有问题么,而且有可能让别人知道具体问题在哪里。所以调试版和运行版本应该区别对待。调试阶段,为了快速解决问题,可以临时把错误信息直接输出到客户端,但这绝对不是什么好事。为了不让客户端显示意外的错误信息,需要用try{。。。}catch{。。。}结构块来捕获所有的可能的错误。try。。catch捕获到错误以后,将所有现场变量和错误信息写入错误日志,以供后续分析。
做到以上3点,可以保证用户访问的资源是允许访问的,访问的参数是受控的,而且就算服务器有什么异常,也不会让客户端知道细节。
分享到:
相关推荐
PHP安全方面的,以前从网上弄下来的。
PHP语言以其强大的功能在动态网站建设中得到广泛应用但因其本身的缺陷以及开发人员的安全意识不足 使 得 网 站 存 在 各 种 安 全 漏 洞 同 时随着网站信息量的增加 不 仅 应用服务器的负担随之增加而 且 不 利 于 ...
浅析PHP网站安全漏洞与安全防范措施.pdf
我们做了很多工作,当然很多高手们还是可以入侵,这我们并不感到奇怪,因为我们相信天外有天,人外有人,虽然我们现在服务器还是稳定(高手们不要来喷了),我们把我们曾经做的一些安全操作分享给大家,包括linux...
编程语言+PHP+动态网页+安全防护**:这是一个关于PHP编程语言的动态网页的安全防护的资源,适合有一定PHP基础的开发者。它介绍了PHP的特点、优势、劣势和应用领域,以及如何使用PHP来开发动态网页,包括表单、文件、...
php网站制作时安全防范知识 PHP代码安全和XSS,SQL注入等对于各类网站的安全非常中用,尤其是UGC(User Generated Content)网站,论坛和电子商务网站,常常是XSS和SQL注入的重灾区。这里简单介绍一些基本编程要点, ...
PHP安全配置 如何将PHP配置的更安全
PHP安全漏洞防范研究.pdf
红鸟PHP安全防护插件是一套通用的PHP安全防护插件; 无需对源代码做任何修改,直接将本文件引入源代码即可,使用非常方便; 从代码层面拦截常见的sql注入、xss跨站等攻击; 拦截规则可自定义增减; 拦截提示字符可...
另外,目前闹的轰轰烈烈的SQL Injection也是在PHP上有很多利用方式,所以要保证安全,PHP代码编写是一方面,PHP的配置更是非常关键。 我们php手手工安装的,php的默认配置文件在 /usr/local/apache2/conf/php.ini,...
数字版 九阴真经网络安全防范绝招.php
基于MD5和Session的PHP安全防范.pdf
PHP网站的攻击与安全防范.pdf
基于PHP的互联网信息数据安全防护类网站.zip
书名叫《PHP应用程序安全编程》,本书涵盖内容包括:Web应用程序安全的基础知识;从开始阶段设计安全的应用程序——去除已有应用程序的安全漏洞;缓冲区溢出、文件系统访问、身份验证、加密等;防御PHP自身无法防御...
php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(), 同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/etc/passwd, 但是默认的php.ini是没有...
360通用php防护代码 -----------------使用方法------------------------------------------------------------------ 1.将360_safe3.php传到要包含的文件的目录 2.在页面中加入防护,有两种做法,根据情况二选一...
上网者必须知道的十大安全性防护守则.php
php安全过滤类
PHP安全访问数据库防范,将查询的结果集放入数组