每个优秀的PHP开发人员都应该能够回答的问题
我经历了这个问题,对这个问题的内容和方法印象深刻,所以本着同样的精神,我向PHP开发者提出这个问题 你认为一个好的PHP程序员应该回答哪些问题? 编辑:我将这个问题标记为社区维基,因为它不是特定于用户的,它旨在为整个编程社区服务 期待一些令人惊讶的回应每个优秀的PHP开发人员都应该能够回答的问题,php,Php,我经历了这个问题,对这个问题的内容和方法印象深刻,所以本着同样的精神,我向PHP开发者提出这个问题 你认为一个好的PHP程序员应该回答哪些问题? 编辑:我将这个问题标记为社区维基,因为它不是特定于用户的,它旨在为整个编程社区服务 期待一些令人惊讶的回应 注意:请按照评论中的建议回答问题,这样人们也可以学习有关该语言的新知识 转义用户输入的最佳实践是什么?(这个问题似乎经常出现)为什么不应该直接输出用户输入 直接从GET打印数据等内容可能会导致漏洞。 这就是为什么您应该始终首先通过htmlspec
注意:请按照评论中的建议回答问题,这样人们也可以学习有关该语言的新知识 转义用户输入的最佳实践是什么?(这个问题似乎经常出现)为什么不应该直接输出用户输入 直接从GET打印数据等内容可能会导致漏洞。
这就是为什么您应该始终首先通过htmlspecialchars()从客户端发送输入。我认为一个好问题是:HTTP是如何工作的?在PHP开发中,使用
GET
和POST
数据以及其他HTTP通信是固有的。了解HTTP如何在更广泛的环境中工作以及PHP如何实现这一点有很大的帮助。PHP是跨浏览器的吗
(我知道,这会让很多人发笑,但这是php论坛上问得最多的问题!)绝对是安全问题 (这篇文章的答案很简单,当然保护php web应用程序要复杂得多)
- 如何处理SQL注入
- 如何处理CSRF(跨站点请求伪造)
- 如何处理反射和存储的XSS(跨站点脚本)
- XXX注入的变体:LDAP注入、XPath注入等李>
- 什么是合理的功能列表
- 如何处理文件包含危险
- 什么是路径横截
- 与文件上载相关的风险有哪些
- 如何强制您的PHP配置的配置(即,您知道PHP.ini的用途吗)
- 关于过滤用户数据:消毒与检查和拒绝之间有什么区别
第一种方法将条目转换为不那么敌对的内容。第二个检查条目是否正确,如果不正确,则拒绝它。当使用php开发站点时,它完全是垃圾,它是: a) PHPs断层
b) 程序员错误无可否认,我从其他地方偷了这个问题(不记得我在哪里读过了),但觉得很有趣: Q:什么是
T\PAAMAYIM\u NEKUDOTAYIM
?A:其作用域解析运算符(双冒号) 一个有经验的PHP程序员马上就知道它的意思。 经验较少(不是希伯来语)的开发人员可能希望阅读 但现在更严重的问题是:
Q:此警告的原因是什么:“警告:无法修改标题信息-标题已发送”,防止此警告的最佳做法是什么?
A:原因:发送了正文数据,导致也发送了标题。
预防:在输出任何正文数据之前,请确保首先执行特定于标题的代码。确保没有意外地发送空白或任何其他字符
Q:此查询有什么问题:
“从id=$\u POST['id']的表中选择*”
?A:1。它是SQL注入的漏洞。切勿在查询中直接使用用户输入。先消毒。最好使用准备好的语句()2。不要选择所有列(*),而是指定每一列。这主要是为了防止查询占用内存,例如在将来某个时候添加BLOB列
Q:这个if语句有什么问题:
if(!strpos(!haystack,$needle).
?A:
strpos
返回它第一次找到$pinder的索引位置,可能是0
。由于0
也会解析为false
所以解决方案是使用严格的比较:if(false!==strpos($haystack,$pinder).
Q:编写此if语句的首选方式是什么,为什么?
if(5==$someVar)
或if($someVar==5)
A:前者,因为它可以防止在忘记使用2个等号(
$someVar=5
)时意外将5分配给$someVar,并且会导致错误,后者不会
Q:给定以下代码:
function doSomething( &$arg )
{
$return = $arg;
$arg += 1;
return $return;
}
$a = 3;
$b = doSomething( $a );
class SomeClass
{
protected $_someMember;
public function __construct()
{
$this->_someMember = 1;
}
public static function getSomethingStatic()
{
return $this->_someMember * 5; // here's the catch
}
}
…函数调用后,$a
和$b
的值是多少?为什么?A:
$A
是4
,$b
是3
。前者是因为$arg是通过引用传递的,后者是因为函数的返回值
$a = 2;
function foo()
{
$a = 3;
}
foo();
echo $a;
$a = 012;
echo $a / 4;