我只是想知道在创建接受文章的网页时我应该使用哪些基本的PHP安全技术?
我对PHP很陌生,并且想知道在我担任安全专家之前会有什么问题?
答案 0 :(得分:5)
接受稍后将显示的用户生成的文本时,需要考虑两个方面。
首先,您需要保护您的数据库免受注入攻击。这有一个简单的PHP函数:mysql_real_escape_string()通常足以保护您的数据库在传入此字符串时作为字段值存储而无需注入。
从那里开始,你必须要小心你的显示,因为当显示代码时,允许上传HTML代码的用户可以对其他用户做些讨厌的事情。如果您正在撰写纯文章,则只需htmlspecialchars()生成的文字即可。 (您也可能希望将换行符转换为
标签。)如果您使用的是格式化解决方案,例如此站点上使用的Markdown引擎,那些解决方案通常会提供HTML清理作为引擎的功能,但一定要阅读文档并确保。
哦,请确保您还要验证用于提交文章的GET / POST变量。毋庸置疑,所执行的验证需要根据您的网站的逻辑进行调整。
答案 1 :(得分:1)
这是广泛的,也许你应该尝试缩小它。
什么样的安全? 对于密码? 你想限制一些东西吗? SQL注入? HTML注入? 跨域安全性?
答案 2 :(得分:1)
好吧,正如其他答案中所提到的,有许多不同的前端可以破坏您的PHP脚本。
以下是一对夫妇:
有很多方法可以处理每种方法。以下是一些要注意的事项:
答案 3 :(得分:0)
有很多要知道,你应该尽快开始。
首先,如果您接受文章(并且可能使用WYSIWYG并且正在接受HTML),请使用某些内容来解析内容并删除可能使您容易受到XSS等攻击的内容。
一个例子是HTML Purifier。
答案 4 :(得分:0)
开始使用像Drupal或CakePHP这样的框架可能是明智之举。这样你就可以从他们实现安全性的方式中学习,并利用它已经完成的事实。学习曲线足够陡峭,无需滚动自己的身份验证机制等。
答案 5 :(得分:0)
也许两个提示可以帮助您获得更安全的网站
当你必须插入数据库或删除,清理输入,使用mysql预编译语句或断言通过post到达的值或得到这样的方式:
if(!empty($_GET["integer_like_id_value"]){
$integer_id_value = (int)$_GET["integer_like_id_value"];
}else{
// that stuff seems not to be legit, die application, log error ? whatever
die();
}
答案 6 :(得分:0)
答案 7 :(得分:-1)
当您的项目准备好供公众使用时,通常最好设置error_reporting(0);
它不会提供更多安全性,但它会让坏人更难(通常)找到您网站可能出现的安全问题。