gpt4 book ai didi

php - mysql 的安全表单数据

转载 作者:行者123 更新时间:2023-11-29 09:11:57 24 4
gpt4 key购买 nike

我一直在使用:

if ($_POST['Comments']!=""){
$comments = mysql_real_escape_string($_POST['Comments']);
}else{
$comments = "";
}

自从用户在他们的数据中添加撇号后,它就破坏了我的 sql 语句。我认为这同时也保护了数据。但刚才我收到了一个提交,在数据库的评论字段中我看到:

 /r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r
<a href="http://seowebsite.com">seohelp</a>

当有人提交时我收到的电子邮件中包含实际有效的链接文本。

我认为 mysql_real_escape_string() 应该摆脱所有这些?

有什么建议吗?我正在考虑做一个函数,通过几个不同的步骤为我完成所有字符串清理。但如果有一种方法只需一步即可确保安全,那就太好了。

最佳答案

mysql_real_escape_string()只能保护*您免受 SQL 注入(inject),而不能防止跨站脚本 (XSS)。

* mysql_real_escape_string()与 SET NAMES 结合使用时无法正常运行,因为它不知道所使用的字符集。使用mysql_set_charset()相反。

<小时/>

为了保护自己免受 XSS 侵害,您还必须使用 htmlentities()htmlspecialchars()在插入时间(在 mysql_real_escape_string() 之前)或在显示时间。

$escaped = htmlspecialchars($string, ENT_QUOTES, 'UTF-8');

如果您想允许某些 HTML 内容,请使用HTML Purifier包含您想要允许的元素和属性的白名单。

关于php - mysql 的安全表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5329525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com