【汇总】php 之编程习惯、优化、安全

本文详细介绍了多种编程语言和文件类型的编码规范,包括JavaScript、HTML、SQL及PHP的书写规则,强调了统一编码格式的重要性,并提供了实用的代码优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--------------------  优先权顺序进行缩进(一个4空格)

 

 

----------------------javascript书写规范

type="text/javascript"和 language="javascript"这两种目前方法都可以使用。其中language这个属性在W3C的HTML标准中,已不再推荐使用。
因此,我们约定:
    页面中引入javascript使用
<script type=”text/javascript” src=”xxx.js”></script>
    页面中声明javascript使用
<script type=”text/javascript”>
<!—
//这里加上方法体
//-->
</script>

 

 

 

----------------------文件保存格式


无论是PHP 或者 javascript或者html文件 或者是css文件,统一保存为utf-8

 

 

---------------------- HTML书写规则


所有HTML标记参数赋值需使用双引号包含 ,所有html标记为小写字母,且使用xml标签形式的自闭和 。例如,应当使用<input type=”text” name=”test” value=”ok” />,而绝对不能使用<input type=text name=test value=ok>。应当使用<br />儿不应该使用<br>,<BR>或者<BR />,所有html文件以小写.html为后缀 ,以非下划线开始的数字或英文字母为文件名。

 

 

--------------------SQL语句相关

所有SQL语句中,除了表名、字段名称以外,全部语句和函数均需大写 ,应当杜绝小写方式或大小写混杂的写法. 很长的SQL语句应当有适当的断行,依据JOIN、FROM、ORDER BY等关键字进行界定。可以参考phpmyadmin执行SQL语句的写法

 

 

 

 

------------------- PHP扩展模块的兼容性



设计中应避免使用PHP扩展模块,或试验性质的的函数或特性。如果确实必要使用,使用时应当加入必要的判断,当服务器环境不支持此函数的时候,进行必要的处理。文档和程序中的注释中,也应加上兼容性说明。

 

------------------- 单引号

 

  单引号不转意任何变量,通常有更高的性能,在能够代替双引号的时候,提倡更多的使用,除非需要解析特殊转义字符(如“\t \r \n”等),则使用双引号。

 

 

-------------------

 

近年来PHP开发组一直倡导代码规范化和标准化,未来版本PHP可能会开始不建议使用甚至取消<? ?>和<?=$variablename?>这种速记形式,因此为了加强程序兼容性,统一使用<?php ?> <?php echo $variablename?>

 

 

--------unset($tmp);//注销变量,数组,对象,节省内存开销

 

 

----------// ===   !==
if (null === $this->_content) {

 

---------//推荐终止程序的写法
exit($json->encode($results));


---------使用foreach 前先判断是否为空
if (!empty($price_list))
    {
        foreach ($price_list as $value)
        {

 

 

 


=================PHP函数 empty isset()只能用于变量,数组,不能是empty(函数)

而intval可以作用于函数

错误:    if(isset(func::post('action')))


使用 unset() 释放变量之后,它将不再是 isset()。
PHP函数isset()只能用于变量,传递任何其它参数都将造成解析错误。
检测常量是否已设置可使用 defined() 函数。





if(empty(trim($_POST["content"]))){

}

报错Can’t use function return value in write context

如果去除trim的话就没问题

如果去除empty的话就没问题

因为empty里的参数是一个变量,而trim的结果是一个字符串

 

 

 

 

 

 

 

==============================

var_dump(in_array('1 and 123123=1233311',array(1,2,3,4,5)));

输出为

bool(true)
/////////////////////////////////
var_dump(in_array('1 and 123123=1233311',array('1','2','3','4','5')));

输出为

bool(false)

目 录 1 PHP接口安全 4 1.1 指定公布给外部的资源,客户端只能访问允许访问的资源 4 1.1.1 说明 4 1.1.2 应对 4 1.1.3 举例 4 1.2 定义所有接口的参数,并做严格的检查 5 1.2.1 说明 5 1.2.2 应对 5 1.2.3 举例 5 1.3 不能让客户端看到任何不友好的错误信息 5 1.3.1 说明 5 1.3.2 应对 5 1.3.3 举例 5 二、PHP编码安全 6 2.1 POST/GET参数传值/字符串输入/数据入库等严格的危险字符过滤处理 6 2.1.1 说明 6 2.2.2 应对 6 2.2.3 举例 6 2.2 相关PHP的I/O操作,需要注意限制权限,文件名或目录名或内容都要做好过滤处理 8 2.2.1 说明 8 2.2.2 应对 8 2.2.3 举例 8 2.3 敏感信息(如PASSWORD/银行帐号等)不要依赖COOKIE,SESSION,最好读表,并尽量缓存读表数据 8 2.3.1 说明 8 2.3.2 应对 9 2.3.3 举例 9 2.4 注意对网站根目录及下面所有子目录及文件的权限控制与保护,不要让配置文件/系统信息等文件暴露 10 2.4.1 说明 10 2.4.2 应对 10 2.4.3 举例 10 2.5 屏蔽或定制化出错信息 10 2.5.1 说明 10 2.5.2 应对 11 2.5.3 举例 11 2.6 数据库的读取等操作、POST/GET传值需要做频率限制与Token校验 11 2.6.1 说明 11 2.6.2 应对 11 2.6.3 举例 11 2.7 有类似文件下载/或文本流下载等功能的,尽量避免使用URL直接调用目标文件地址的方式 12 2.7.1 说明 12 2.7.2 应对 12 2.7.3 举例 12 2.8 MYSQL 的用户最好分开,不要用ROOT用户来连接MYSQL 13 2.8.1 说明 13 2.8.2 应对 13 2.8.3 举例 13 3 参考内容 13
java,c/c++,php,c#安全编码规范,从代码层面避免被入侵 1 业务安全编码规范 6 1.1 输入验证和数据合法性校验 6 1.1.1 避免SQL注入 6 1.1.2 避免XML注入 6 1.1.3 避免跨站点脚本(XSS) 7 1.1.4 避免跨站请求伪造(CSRF) 8 1.1.5 避免敏感信息泄露 12 1.2 安全框架 12 1.2.1 Apache Shiro安全框架 12 1.2.2 webSecrity安全框架 13 1.2.3 Enterprise Security API 13 2 基础安全编码规范 15 2.1 声明和初始化 15 2.1.1 避免类初始化的相互依赖 15 2.2 表达式 16 2.2.1 不可忽略方法的返回值 16 2.2.2 不要引用空指针 16 2.2.3 使用Arrays.equals()来比较数组的内容 16 2.3 数字类型和操作 17 2.3.1 防止整数溢出 17 2.3.2 避免除法和取模运算分母为零 18 2.4 类和方法操作 18 2.4.1 数据成员声明为私有,提供可访问的包装方法 18 2.4.2 敏感类不允许复制 18 2.4.3 比较类的正确做法 19 2.4.4 不要硬编码敏感信息 19 2.4.5 验证方法参数 19 2.4.6 不要使用过时、陈旧或低效的方法 20 2.4.7 数组引用问题 20 2.4.8 不要产生内存泄露 20 2.5 异常处理 21 2.5.1 不要忽略捕获的异常 21 2.5.2 不允许暴露异常的敏感信息 21 2.5.3 不允许抛出RuntimeException, Exception,Throwable 22 2.6 多线程编程 23 2.6.1 确保共享变量的可见性 23 2.6.2 确保共享变量的操作是原子的 24 2.6.3 不要调用Thread.run(),不要使用Thread.stop()以终止线程 26 2.6.4 确保执行阻塞操作的线程可以终止 26 2.6.5 相互依存的任务不要在一个有限的线程池执行 27 2.7 输入输出 27 2.7.1 程序终止前删除临时文件 27 2.7.2 检测和处理文件相关的错误 27 2.7.3 及时释放资源 27 2.8 序列化 28 2.8.1 不要序列化未加密的敏感数据 28 2.8.2 在序列化过程中避免内存和资源泄漏 29 3 其他参考资料 30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值