一种在PHP中验证用户输入的简单方法



我对PHP&SQL安全性和我正在考虑一个验证/过滤用户输入的解决方案。

据我所知,你主要需要担心两件事:
(1(有人将SQL查询注入与数据库交互的输入字段
(2(

在研究过程中,我发现了以下解决方案:
对于(1(:准备好的语句
对于

我知道你必须验证/过滤任何用户输入,据我所知,大多数安全漏洞的存在都是因为这样做的错误。例如,简单地过滤掉以下输入中的<script>标签:

email@<sc<script>ript>example.com

那么,一个真正简单的算法拒绝任何包含"<quot;或">quot;(假设用户没有理由使用这些符号(,并将用户输入中的[b]之类的内容替换为<b>以允许特定标签?这不是一种防止恶意HTML内容的防弹方法吗?或者我错过了什么?

此外,我想知道一直使用准备好的语句是否会使SQL注入变得不可能,或者是否仍然可以在专门使用准备好语句的页面上进行SQL注入?

你可以做到,是的。但你可能会面临另一次攻击。你可以解决这个问题,但你可能仍然。。。

正因为如此,白名单就更容易了。只允许某些字符(尽管允许使用更广泛的字符集(,您可以简单地只允许这些字符。

基本逻辑是电子邮件只包含a-z0-9-_.<script>0。如果使用了该集合之外的任何字符,那就是错误的。

从那里,你可以指定它更多。电子邮件是一组字符(减号@(,而不是@,然后是那个字符集(减号@.(
从那里,您可以添加域检查,例如.{2,}$(必须以句点结尾,并且至少以字母结尾(
从那里。。。

这只是节省的部分。在显示器上,您需要各种技巧来确保它不是XSS。


或者你可以直接使用

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Not an emailaddress, please try again before submitting!"; 
}

相关内容

  • 没有找到相关文章

最新更新