PHP字段验证使用什么方法
其他方法的最佳实践是什么;外PHP字段验证使用什么方法,php,mysql,regex,validation,post,Php,Mysql,Regex,Validation,Post,其他方法的最佳实践是什么;外 !empty(); isset(); !is_null(); 以及为变量赋值,例如 $variable = $_POST['value']` 我是否使用以确保表单数据已验证为足够干净,可以使用 我是否尝试使用字段长度和正则表达式验证 如果端点是使用MySQL和PHP的API,使用htmlspecialchars()是否会导致使用这些方法的数据丢失的潜在问题?您可以使用filter\u输入方法并使用类似于filter\u SANITIZE\u SPECIAL\u
!empty();
isset();
!is_null();
以及为变量赋值,例如
$variable = $_POST['value']`
我是否使用以确保表单数据已验证为足够干净,可以使用
我是否尝试使用字段长度和正则表达式验证
如果端点是使用MySQL和PHP的API,使用
htmlspecialchars()
是否会导致使用这些方法的数据丢失的潜在问题?您可以使用filter\u输入方法并使用类似于filter\u SANITIZE\u SPECIAL\u CHARS的过滤器。这是过滤post参数的更好方法 对于输入验证,我将向您介绍开放式Web应用程序安全项目(OWASP)。这些页面位于、和
因为您特别引用了MySQL,所以我要指出,最好的安全实践是使用PDO或MySQLi来参数化您的语句。在防止MySQL注入方面,参数化语句比依赖净化输入更有效,因为PHP不依赖语法来区分用户输入和SQL查询本身。但是,从数据库访问数据时,htmlspecialchars()
仍然可以方便地防止XSS攻击 非常好的答案谢谢
在MySQL方面,参数化语句肯定是唯一使用的方法
我想对我来说最重要的是通过post方法提交值
如果我期望的是JSON,并且只有JSON,那么类似的东西应该可以在服务器端工作
function isJSON(MyTestStr){
try {
var MyJSON = JSON.stringify(MyTestStr);
var json = JSON.parse(MyJSON);
if(typeof(MyTestStr) == 'string')
if(MyTestStr.length == 0)
return false;
}
catch(e){
return false;
}
return true;
}
然后,我应该能够通过直接从JSON中提取值并在PHP脚本中使用它们来做任何进一步的事情,而不用太担心。每次使用输入数据都需要不同的过滤/保护
首先,我喜欢做
$foo = @$_POST['foo'];
if (empty(foo)) ... // take different action if foo is totally missing (not just blank)
要插入MySQL,请使用API中可用的转义机制--real\u escape\u string
,或“binding”。不要使用mysql\u*
API,它已被mysqli\u*
取代。不要将多个查询合并到一个调用中
要在HTML页面上显示,请使用htmlentities
。注意:在插入到数据库表之前不要使用它;那只会把桌子弄得乱七八糟。取而代之的是,在展示之前要有使用它的习惯
如果您有一个旧版本的PHP,您可能会尝试使用神奇的引号。不要!正如一篇评论所说的那样,“[这种]一刀切的逃避/引用方法是错误的,完全危险的。”
对于JSON,我喜欢JSON\u encode(…)
和JSON\u decode(…,TRUE)
这取决于您需要验证什么。。。例如,要检查电子邮件是否有效,请不要使用!空()代码>您混合了一些东西,验证/卫生、SQL注入/XSS等等。总的来说,这个问题对SO imho来说太广泛了,每个主题都有大量的资源。htmlspecialchars
不应该在保存数据时使用,只在输出时使用,所以你不应该有任何数据丢失。但是我会用它来确保$\u POST['email']中确实包含一些内容吗,然后检查它是否是使用正则表达式的电子邮件,或者直接跳到正则表达式?试试这个