只要我们作好了各类操作就可在基本防止一些朋友利用网站本身的漏洞进行网站操作了, 很多在 php 中都有的如 XSS 用 htmlentities() 预防 XSS 攻击还有 sql 注入可以用 mysql_real_...
只要我们作好了各类操作就可在基本防止一些朋友利用网站本身的漏洞进行网站操作了, 很多在 php 中都有的如 XSS 用 htmlentities() 预防 XSS 攻击还有 sql 注入可以用 mysql_real_escape_string 操作等.
PHP 包括其他任何网络编程语言的安全性, 具体表现在本地安全性和远程安全性两个方面, 这里我们应该养成如下的几个习惯确保我们的 PHP 程序本身是安全的.
1 验证用户输入的任何数据, 保证 PHP 代码的安全
这里有一个技巧就是使用白名单, 所谓白名单就是说, 我们要求用户的数据应该是这样的, 例如我们要求用户的输入是一个数字, 我们就只检验这个值是否是一个数字就行了, 而不必检验他到底是什么其实他有可能是个恶意脚本
对于这个检验我们不能只在客户端的 javascript 进行, 战地认为 JS 只是为了提高来访用户的体验而产生的, 而不是验证的工具, 因为任何一个来访的用户都可能会, 也有可能无意间就禁用了客户端脚本的执行, 从而跳过这层验证, 所以我们必须在 PHP 的服务器端程序上检验这些数据.
2 保护数据库的安全对即将运行于数据库的 Sql 语句进行安全性预处理
任何时候都要对执行前的 Mysql 语句, 进行 mysql_real_escape_string 操作该函数的用法请参考 PHP 手册, 诸多 PHP 的数据库抽象层例如 ADODB 都提供了类似的方法.
3 不要依赖不该依赖的 PHP 设置环境有时候不可靠
不依赖, magic_quotes_gpc=On, 在程序编制的过程, 尽量关闭这个配置选项, 任何时候判断这个选项后再对用户输入的数据进行处理, 切记 PHP v6 中将会删除这个选项尽量在合适的时候使用 addcslashes 系列函数请参考手册
4 验证数据来源, 避免远程表单提交
不要使用 $_SERVER['HTTP_REFERER'] 这个超级变量来检查数据的来源地址, 一个很小的菜鸟黑客都会利用工具来伪造这个变量的数据, 尽可能利用 Md5, 或者 rand 等函数来产生一个令牌, 验证来源的时候, 验证这个令牌是否匹配.
5 保护会话数据, 特别是 Cookies
Cookie 是保存在用户的计算机上的, 保存之后任何用户都有可能出于某种原因更改他, 我们必须对敏感数据进行加密处理, Md5sha1 都是个不错的加密方法.
6 利用 htmlentities() 预防 XSS 攻击
对用户可能输入脚本语言的地方的数据进行 htmlentities() 操, 将多数可以产生程序错误的用户输入进行实体化, 记住要遵循第一个习惯: 在 web 应用程序的名称电子邮件地址电话号码和帐单信息的输入中用白名单中的值验证输入数据.
来源: https://www.php1.cn/detail/php-8e9dbb547b.html