PHP 对输入过滤是不是 htmlspecialchars 就够了? (不考虑 SQL 注入, PDO prepare 已经解决)

PHP 对输入过滤是不是 htmlspecialchars 就够了? (不考虑 SQL 注入, PDO prepare 已经解决),第1张

PHP 对输入过滤是不是 htmlspecialchars 就够了? (不考虑 SQL 注入, PDO prepare 已经解决),第2张

安全编码方面,SQL 注入由 PDO prepare 来解决, 是不是 防范安全方面,XSS 攻击什么的,是不是用 htmlspecialchars 就够了?

比如对 $_GET 的处理:

function get($name){
    
    return htmlspecialchars($_GET["$name"]);
    
}

这样处理后,还会有什么输入的漏洞吗? 还是说强制转 string 什么的更安全呢?

----------------------- 以下是精选回复-----------------------

答:xss
答:这是很糟糕的做法,除了 htmlspecialchars,还得有 xml_specialchars,regex_specialchars,database_specialchars 等等,在入口处统一过滤或者转义,是简单粗暴很 low 的做法,它在让你丢失原始数据的同时,并没有真正避开危险。
答:Pdo prepare 的预处理完全能避免 sql 攻击
htmlspecialchars 用于将显示的时候转义实体字符避免 xss

附上一篇关于 pdo 预处理为什么能防止 sql 攻击的文章

http://www.cnblogs.com/LoveJenny/archive/2013/01/15/2860553.html
答:是的,肯定够了。但是我们还是有需求保留安全的 html 文本,比如不把图片 img 标签给过滤掉,而对有危险的比如 script 标签、onclick 属性文本过滤,而不是一刀切全部干掉。
答:PDO prepare 并不能百分百防止注入。
1. 要统一好整个网站,web 服务器,数据库的编码。
2. $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 要记得设置
3. 注意二级注入。比如用户把带危险的字符串先存进数据库,如果你想在另外一个 SQL 语句里 concat 或者直接拼接那个带危险的字符串,是可以注入的。

至于 XSS,:
http://stackoverflow.com/questions/19584189/when-used-correctly-is-htmlspecialchars-sufficient-for-protection-against-all-x

ajax 的话用.text(data)也是安全的
答:a.输入过滤是错误的做法,正确的做法是在输出的时候按照不同的位置进行相应的合适的处理(不仅限于后端)
b.htmlspecialchars 不带参数的时候仅适用于 html 标签内容
c.prepare 的问题#13 基本讲了
d.常见的还需要覆盖的有 csrf、cookie 的种种安全问题,session 的种种安全问题,密码安全等
e.你得先知道怎么攻击才能真正知道怎么防御,很多程序员的问题在于,说起安全都能说要做 123 (当然楼主连 123 都没说对说全),但为啥要做,不做会被怎么攻击都讲不清楚,这就有很大风险会导致作出徒有其表的防御
f.要讲安全,建议先通读 owasp cheatsheet 系列
答:听说自带的那个过滤的不严
答:自我觉得完全够用。在全部的地方过滤即可。
当你不需要原始数据时,你可以过滤后放入,对性能优。
当你需要原始数据时,你可以取出后过滤输出。
答:防注入,pdo 的 prepare 足矣,不用做其他处理
防 xss,是在把用户输入的内容渲染到 html 的时候要转义

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » PHP 对输入过滤是不是 htmlspecialchars 就够了? (不考虑 SQL 注入, PDO prepare 已经解决)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情