Tôi có một trang web bằng php bao gồm() để nhúng nội dung vào một mẫu. Trang tải được đưa ra trong tham số get, tôi thêm ".php" vào cuối tham số và bao gồm trang đó. Tôi cần phải làm một số kiểm tra an ninh để tránh XSS hoặc các công cụ khác (không mysql tiêm vì chúng tôi không có một cơ sở dữ liệu). Những gì tôi đã đưa ra là sau đây.
$page = $_GET['page'];
if(!strpos(strtolower($page), 'http') || !strpos($page, '/') ||
!strpos($page, '\\') || !strpos($page, '..')) {
//append ".php" to $page and include the page
Có điều gì khác tôi có thể làm để tiếp tục làm vệ sinh đầu vào của mình không?
Không kiểm tra kết quả của strpos() như thế - nó sẽ trả về 0 nếu kết quả là ở đầu chuỗi, sẽ đánh giá false –
@Tom, giải pháp acceppted cho phép tôi cũng tránh điều đó, dù sao, tôi sẽ nhớ lời khuyên của bạn cho mã tương lai. –
Xem thêm: http://stackoverflow.com/a/15825812/59087 –