我有点困惑,PHP中有很多函数,有些使用这个,有些使用那个。有些人使用:htmlspecialchars(),htmlentities(),strip_tags()等哪个是正确的,你们通常使用什么?这是正确的吗(如果有的话,建议我做一个更好的):$var = mysql_real_escape_string(htmlentities($_POST['username']));该行可以防止MySQL注入和XSS攻击?顺便说一句,除了XSS攻击和MySQL注入之外,还有其他需要注意的事情吗?编辑结论:如果我想将字符串插入数据库,则无需使用htmlentities,只需使用即可mysql_real_escape_string。在显示数据时,请使用htmlentities(),这是您的全部意思吗?总结:mysql_real_escape_string 在插入数据库时使用htmlentities() 在将数据输出到网页时使用htmlspecialchars() 什么时候用的?strip_tags() 什么时候用的?addslashes() 什么时候用的?有人可以填写问号吗?
3 回答
![?](http://img1.sycdn.imooc.com/5458655200013d9802200220-100-100.jpg)
慕慕森
TA贡献1856条经验 获得超17个赞
仅在数据进入需要对其进行编码的系统中进行编码–否则,您将遇到要处理真实数据的情况。
对于SQL注入-按照如何防止PHP中的SQL注入中所述使用绑定变量。(它讨论的是准备好的语句,但是绑定可以为您提供保护,而不是准备)。
对于XSS-如果要在指定HTML或文本的位置写入HTML。在生成文档时使用htmlentities。我会避免以这种形式将数据存储在数据库中(除非在经常发生写稀疏读取的系统中,CPU性能/磁盘访问时间越来越多并且出现问题-否则我将获得该列的raw_和html_版本…或只使用memcached或类似的东西。
如果要让用户输入URL,则您需要更加小心,因为javascript:do_evil()将执行有效的URI(例如,作为单击链接的href或(在某些浏览器中)作为刚刚加载的图像的src)。
- 3 回答
- 0 关注
- 537 浏览
添加回答
举报
0/150
提交
取消