我刚开始学习PHP,我一直在ASP.Net开发Web应用程序很长一段时间.我想知道是否有任何PHP特定的安全错误,我应该注意.
所以,我的问题是每个PHP开发人员应该知道的最重要的安全提示是什么?
每个答案请保持一个提示,以便人们可以有效地上/下投票.
有没有更好的方法来做到这一点?
if( $_POST['id'] != (integer)$_POST['id'] )
echo 'not a integer';
Run Code Online (Sandbox Code Playgroud)
我试过了
if( !is_int($_POST['id']) )
Run Code Online (Sandbox Code Playgroud)
但is_int()由于某种原因不起作用.
我的表格看起来像这样
<form method="post">
<input type="text" name="id">
</form>
Run Code Online (Sandbox Code Playgroud)
我研究了is_int(),似乎如果
is_int('23'); // would return false (not what I want)
is_int(23); // would return true
Run Code Online (Sandbox Code Playgroud)
我也试过了 is_numeric()
is_numeric('23'); // return true
is_numeric(23); // return true
is_numeric('23.3'); // also returns true (not what I want)
Run Code Online (Sandbox Code Playgroud)
似乎这样做的唯一方法是: [这是一种不好的方式,不要这样做,请参阅下面的注释]
if( '23' == (integer)'23' ) // return true
if( 23 == (integer)23 ) // return true
if( 23.3 …Run Code Online (Sandbox Code Playgroud) 我有一个这样的页面:
http://sitename/gallery.php?page=2
它底部有分页链接,我们可以浏览它们.每次点击页码时,它都会发送一个参数page = 1或page = 2的GET请求,依此类推......
当我将这些值存储到$pageteh $_GET变量时,它是一个字符串值.我可以使用(int)这样的方法将它转换为整数:
if(!empty($_GET['page'])){
$page = (int)$_GET['page'];
echo "Page Number: ".$page;
}
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能确保传递的值只是一个整数而不是其他废话?
我在许多应用程序中使用过这两个函数来检查和验证整数,如下所示
$foo = $bar;
if (filter_var($foo,FILTER_VALIDATE_INT)) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
和
if (is_int($foo)) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
两者都工作得很好,但我想知道两者在速度和结果方面的区别,因为 PHP 是一种棘手的语言,在似乎做同样事情的函数之间存在差异,例如mt_rand和rand