标签:php shell security regular-expression
我想将Web表单中的电子邮件地址传递给bash脚本.我正在使用以下正则表达式:
/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/
这够了吗?或者可以嵌入漏洞?
该脚本是从PHP调用的:
system('/usr/local/bin/script.sh "$email"');
解决方法:
您可以在PHP中清理和验证电子邮件地址,这比调用shell脚本更快,更安全.使用来自Web服务的未经过处理的数据调用shell脚本只会添加另一个可能破坏的东西.
$sanitized_email = filter_var($email, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_email, FILTER_VALIDATE_EMAIL)) {
echo "This sanitized email address is considered valid.\n";
echo "Before: $email\n";
echo "After: $sanitized_email\n";
} else {
echo "This sanitized email address is considered invalid.\n";
}
上面的例子改编自examples on the PHP.net site.
标签:php,shell,security,regular-expression 来源: https://codeday.me/bug/20190809/1632981.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。