我想知道在创建一个接受文章的网页时,应该使用哪些基本的PHP安全技术?
我对PHP还比较新,想知道在我成为安全专家之前,什么可以保证我的网页安全?
当接受用户生成的文本以便后续显示时,需要考虑两个方面。
首先,您需要保护数据库免受注入攻击。这里有一个简单的PHP函数:mysql_real_escape_string()通常足以保护您的数据库免受注入攻击,将此字符串传递给存储为字段值。
从那里开始,您必须小心您的显示方式,因为允许上传HTML代码的用户在显示该代码时可能对其他用户造成不良影响。如果您正在使用纯文本文章,则可以简单地htmlspecialchars()结果文本。(您还可能希望将换行符转换为< br/>标签。)如果您正在使用格式化解决方案,例如在本站使用的Markdown引擎,则这些解决方案通常会作为引擎的功能提供HTML消毒,但请务必阅读文档并确认。
哦,确保您还验证用于提交文章的GET / POST变量。这是不言而喻的,所执行的验证将需要根据您的站点与其逻辑进行调整。
这个问题太笼统了,也许你应该尝试缩小范围。
你想要什么样的安全措施呢? 是针对密码的吗? 你想要限制一些特定内容吗? 防范SQL注入攻击? 还是防止HTML注入攻击?跨域安全?
当您要插入或删除数据时,请对输入进行清理,并使用MySQL准备语句或断言通过post或get接收到的值:
if(!empty($_GET["integer_like_id_value"]){
$integer_id_value = (int)$_GET["integer_like_id_value"];
}else{
//这些数值似乎不合法, 终止应用程序,记录错误?或其他操作
die();
}
有很多需要了解的内容,你应该尽早开始。
首先,如果你接受文章(并且可能使用所见即所得编辑器并接受HTML),请使用某些工具来解析内容并剥离可能使你容易受到XSS等攻击的东西。
一个例子是HTML Purifier。
如果你想开始编程,使用像Drupal或CakePHP这样的框架可能是明智的选择。这样你可以学习他们实现安全性的方式,并利用已经完成的工作。在没有自己开发认证机制的情况下,学习曲线已经足够陡峭了。
当你的项目准备好供公众使用时,通常最好设置error_reporting(0);
它不会提供更多的安全性,但通常会使坏人更难找到你网站可能存在的安全问题。
mysql_real_escape_string()
函数来避免 SQL 注入攻击。有关详细信息,请参见此链接:http://en.wikipedia.org/wiki/SQL_injection#Parameterized_statements - Chad Birch